diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c index 533d4831c2886b74c8bb8d4d445a163c875be9c5..e7c1a19a0f64f0073a9e7eb9d10dc419e496e799 100644 --- a/src/sbbs3/js_file.c +++ b/src/sbbs3/js_file.c @@ -1447,6 +1447,7 @@ js_write(JSContext *cx, uintN argc, jsval *arglist) char* cp; char* uubuf=NULL; size_t len; /* string length */ + int decoded_len; size_t tlen; /* total length to write (may be greater than len) */ int32 i; JSString* str; @@ -1475,12 +1476,12 @@ js_write(JSContext *cx, uintN argc, jsval *arglist) if((p->uuencoded || p->b64encoded || p->yencoded) && len && (uubuf=malloc(len))!=NULL) { if(p->uuencoded) - len=uudecode(uubuf,len,cp,len); + decoded_len=uudecode(uubuf,len,cp,len); else if(p->yencoded) - len=ydecode(uubuf,len,cp,len); + decoded_len=ydecode(uubuf,len,cp,len); else - len=b64_decode(uubuf,len,cp,len); - if(len<0) { + decoded_len=b64_decode(uubuf,len,cp,len); + if(decoded_len<0) { free(uubuf); free(cp); JS_RESUMEREQUEST(cx, rc); @@ -1488,6 +1489,7 @@ js_write(JSContext *cx, uintN argc, jsval *arglist) } free(cp); cp=uubuf; + len = decoded_len; } if(p->rot13)