From 34f671d68fcef4cea632739cffd20a618c0ac7e0 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 20 Feb 2018 06:32:37 +0000
Subject: [PATCH] Fix Coverity-scan reported "Resource leak" in JS
 bbs.cmdstr(). Luckily, it doesn't appear anyone actually uses this function.

---
 src/sbbs3/js_bbs.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index 604497d47a..9917404649 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -3052,7 +3052,7 @@ static JSBool
 js_cmdstr(JSContext *cx, uintN argc, jsval *arglist)
 {
 	jsval *argv=JS_ARGV(cx, arglist);
-	char*		p;
+	char*		p = NULL;
 	const char	*def="";
 	char*		fpath=(char *)def;
 	char*		fspec=(char *)def;
@@ -3073,6 +3073,8 @@ js_cmdstr(JSContext *cx, uintN argc, jsval *arglist)
  		return(JS_FALSE);
 
 	JSSTRING_TO_MSTRING(cx, js_str, p, NULL);
+	if(p == NULL)
+		return JS_FALSE;
 
 	for(uintN i=1;i<argc;i++) {
 		if(JSVAL_IS_STRING(argv[i])) {
@@ -3091,14 +3093,15 @@ js_cmdstr(JSContext *cx, uintN argc, jsval *arglist)
 	}
 
 	rc=JS_SUSPENDREQUEST(cx);
-	p=sbbs->cmdstr(p,fpath,fspec,NULL);
+	char* cmd = sbbs->cmdstr(p, fpath, fspec, NULL);
+	free(p);
 	if(fpath != def)
 		free(fpath);
 	if(fspec != def)
 		free(fspec);
 	JS_RESUMEREQUEST(cx, rc);
 
-	if((js_str=JS_NewStringCopyZ(cx, p))==NULL)
+	if((js_str=JS_NewStringCopyZ(cx, cmd))==NULL)
 		return(JS_FALSE);
 	JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(js_str));
 	return(JS_TRUE);
-- 
GitLab