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