From cc06b0b54b403549e83a268d1791bed6a12f482d Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Mon, 12 Apr 2021 20:48:55 -0700 Subject: [PATCH] Fix some memory leaks --- src/sbbs3/js_filebase.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/sbbs3/js_filebase.c b/src/sbbs3/js_filebase.c index d9a8df044f..1a8daceb02 100644 --- a/src/sbbs3/js_filebase.c +++ b/src/sbbs3/js_filebase.c @@ -731,7 +731,7 @@ static JSBool js_get_file_name(JSContext *cx, uintN argc, jsval *arglist) { jsval* argv = JS_ARGV(cx, arglist); - char* filepath = NULL; + char filepath[MAX_PATH + 1] = ""; char filename[SMB_FILEIDX_NAMELEN + 1] = ""; JS_SET_RVAL(cx, arglist, JSVAL_NULL); @@ -740,8 +740,7 @@ js_get_file_name(JSContext *cx, uintN argc, jsval *arglist) return JS_FALSE; uintN argn = 0; - JSVALUE_TO_MSTRING(cx, argv[argn], filepath, NULL); - HANDLE_PENDING(cx, filepath); + JSVALUE_TO_STRBUF(cx, argv[argn], filepath, sizeof(filepath), NULL); JSString* js_str; if((js_str = JS_NewStringCopyZ(cx, smb_fileidxname(getfname(filepath), filename, sizeof(filename)))) != NULL) JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(js_str)); @@ -753,7 +752,7 @@ static JSBool js_format_file_name(JSContext *cx, uintN argc, jsval *arglist) { jsval* argv = JS_ARGV(cx, arglist); - char* filepath = NULL; + char filepath[MAX_PATH + 1] = ""; int32 size = 12; bool pad = false; @@ -763,8 +762,7 @@ js_format_file_name(JSContext *cx, uintN argc, jsval *arglist) return JS_FALSE; uintN argn = 0; - JSVALUE_TO_MSTRING(cx, argv[argn], filepath, NULL); - HANDLE_PENDING(cx, filepath); + JSVALUE_TO_STRBUF(cx, argv[argn], filepath, sizeof(filepath), NULL); argn++; if(argn < argc && JSVAL_IS_NUMBER(argv[argn])) { JS_ValueToInt32(cx, argv[argn], &size); @@ -820,9 +818,9 @@ js_get_file_path(JSContext *cx, uintN argc, jsval *arglist) argn++; } if(argn < argc && JSVAL_IS_OBJECT(argv[argn])) { + free(filename); if(!parse_file_index_properties(cx, JSVAL_TO_OBJECT(argv[argn]), &file.file_idx)) return JS_TRUE; - free(filename); filename = strdup(file.file_idx.name); argn++; } @@ -872,9 +870,9 @@ js_get_file_size(JSContext *cx, uintN argc, jsval *arglist) argn++; } if(argn < argc && JSVAL_IS_OBJECT(argv[argn])) { + free(filename); if(!parse_file_index_properties(cx, JSVAL_TO_OBJECT(argv[argn]), &file.file_idx)) return JS_TRUE; - free(filename); filename = strdup(file.file_idx.name); argn++; } @@ -923,9 +921,9 @@ js_get_file_time(JSContext *cx, uintN argc, jsval *arglist) argn++; } if(argn < argc && JSVAL_IS_OBJECT(argv[argn])) { + free(filename); if(!parse_file_index_properties(cx, JSVAL_TO_OBJECT(argv[argn]), &file.file_idx)) return JS_TRUE; - free(filename); filename = strdup(file.file_idx.name); argn++; } -- GitLab