From e76e1eee935df095dc8eb76849b5904e50fab85e Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Sat, 10 Jun 2023 11:54:04 -0700 Subject: [PATCH] Fix crash in FileBase constructor when passed an unrecognized dir code New issue as result signed int total_dirs (increased from uint16_t). --- src/sbbs3/js_filebase.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sbbs3/js_filebase.c b/src/sbbs3/js_filebase.c index 05d0bcb0f7..44112f6c1e 100644 --- a/src/sbbs3/js_filebase.c +++ b/src/sbbs3/js_filebase.c @@ -1207,7 +1207,7 @@ js_add_file(JSContext *cx, uintN argc, jsval *arglist) rc=JS_SUSPENDREQUEST(cx); if(file.name != NULL) { if((extdesc == NULL || use_diz_always == true) - && file.dir < scfg->total_dirs + && is_valid_dirnum(scfg, file.dir) && (scfg->dir[file.dir]->misc & DIR_DIZ)) { get_diz(scfg, &file, &extdesc); } @@ -1282,7 +1282,7 @@ js_update_file(JSContext *cx, uintN argc, jsval *arglist) && (p->smb_result = smb_loadfile(&p->smb, filename, &file, file_detail_extdesc)) == SMB_SUCCESS) { p->smb_result = parse_file_properties(cx, fileobj, &file, &extdesc, &metadata); if((extdesc == NULL || use_diz_always == true) - && file.dir < scfg->total_dirs + && is_valid_dirnum(scfg, file.dir) && (scfg->dir[file.dir]->misc & DIR_DIZ)) { get_diz(scfg, &file, &extdesc); } @@ -1820,7 +1820,7 @@ js_filebase_constructor(JSContext *cx, uintN argc, jsval *arglist) #endif p->smb.dirnum = getdirnum(scfg, base); - if(p->smb.dirnum < scfg->total_dirs) { + if(is_valid_dirnum(scfg, p->smb.dirnum)) { safe_snprintf(p->smb.file, sizeof(p->smb.file), "%s%s" ,scfg->dir[p->smb.dirnum]->data_dir, scfg->dir[p->smb.dirnum]->code); } else { /* unknown code */ -- GitLab