>if(length>MAXLEN) {printf("CONTENT_LENGTH>MAXLEN\n");exit(0);}
たとえばこことか。

>buf=((s[++i]>='A') ? s[i]-'A'+10 : s[i]-'0');
こう、なんつーか、スゴいコードを書くんだな‥‥
4eとかは無視かい。