From feed61ce5a27bb54216efdc56b6f849a89c36c78 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Sat, 22 Aug 2015 05:36:55 +0000 Subject: [PATCH] len is unsigned so can't be -1 which is the return value of b64_decode() when it fails (neither uudecode nor ydecode can fail currently). --- src/sbbs3/js_file.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c index 533d4831c2..e7c1a19a0f 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) -- GitLab