diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index 5d8a0fe50143a4c7dc22ec28298c95d1f807c58c..13a1a42284a3d19536a5d82f90629d0e9af6c581 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -2749,7 +2749,7 @@ js_listening_socket_constructor(JSContext *cx, uintN argc, jsval *arglist) uint16_t port; jsrefcount rc; scfg_t *scfg; - struct xpms_set *set; + struct xpms_set *set = NULL; struct ls_cb_data cb; jsuint count; int i; diff --git a/src/sbbs3/js_uifc.c b/src/sbbs3/js_uifc.c index 67e5762aef345336db7dda96de2224e36969fbee..d952aba0ea154113136df3f6f9b9ae8f815f1f9a 100644 --- a/src/sbbs3/js_uifc.c +++ b/src/sbbs3/js_uifc.c @@ -854,6 +854,7 @@ js_uifc_list(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); for(; argn<argc; argn++) { if(JSVAL_IS_STRING(argv[argn])) { + free(title); JSVALUE_TO_MSTRING(cx, argv[argn], title, NULL); HANDLE_PENDING(cx, title); continue; diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index e27e8005981574eae803c4e5cab210ddcc399efb..903155d0d51766214e2a488f440d4751bc0d927f 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -3522,6 +3522,7 @@ sbbs_t::sbbs_t(ushort node_num, union xp_sockaddr *addr, size_t addr_len, const getstr_offset = 0; lastnodemsg = 0; xtrn_mode = 0; + last_ns_time = 0; } //**************************************************************************** diff --git a/src/sbbs3/scfg/scfgnet.c b/src/sbbs3/scfg/scfgnet.c index 235ce384be7edc32ca998dbe80abbe47e290bdcf..e9a5593be6b34483ca9e55d2b954ae6231c4a296 100644 --- a/src/sbbs3/scfg/scfgnet.c +++ b/src/sbbs3/scfg/scfgnet.c @@ -135,7 +135,7 @@ uint getsub(void) opt[k][0]=0; sprintf(str,"Select %s Sub-board",cfg.grp[i]->sname); j=uifc.list(WIN_RHT|WIN_BOT|WIN_SAV,0,0,45,&sub_dflt,&sub_bar,str,opt); - if(j==-1 || j >= cfg.total_subs) + if(j==-1 || j >= k) continue; sub_dflt++; sub_bar++; diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp index 6b748a7e09c29f9742cbe5a4b54bcb565934e888..de2341ec5c7c272dc4ee87f958da96786d972ad7 100644 --- a/src/sbbs3/writemsg.cpp +++ b/src/sbbs3/writemsg.cpp @@ -632,14 +632,24 @@ bool sbbs_t::writemsg(const char *fname, const char *top, char *subj, long mode, return(false); } length=(long)filelength(file); + if(length < 0) { + errormsg(WHERE, ERR_LEN, msgtmp, length); + free(buf); + return false; + } l=strlen((char *)buf); /* reserve space for top and terminating null */ /* truncate if too big */ if(length>(long)((cfg.level_linespermsg[useron_level]*MAX_LINE_LEN)-(l+1))) { length=(cfg.level_linespermsg[useron_level]*MAX_LINE_LEN)-(l+1); bputs(text[OutOfBytes]); } - lread(file,buf+l,length); + long rd = read(file,buf+l,length); close(file); + if(rd != length) { + errormsg(WHERE, ERR_READ, msgtmp, length); + free(buf); + return false; + } // remove(msgtmp); /* no need to save the temp input file */ buf[l+length]=0; } @@ -845,7 +855,7 @@ void sbbs_t::removeline(char *str, char *str2, char num, char skip) errormsg(WHERE,ERR_ALLOC,str,flen); return; } - if(lread(file,buf,flen)!=flen) { + if(read(file,buf,flen)!=flen) { close(file); errormsg(WHERE,ERR_READ,str,flen); free(buf); diff --git a/src/xpdev/xpmap.c b/src/xpdev/xpmap.c index 065d58356375016dd99ff0361885b16ca8010ef4..51ed6a3cdf4c2446b97f146195603b4ce0ec70f0 100644 --- a/src/xpdev/xpmap.c +++ b/src/xpdev/xpmap.c @@ -133,6 +133,7 @@ struct xpmapping* DLLCALL xpmap(const char *filename, enum xpmap_type type) ret=(struct xpmapping *)malloc(sizeof(struct xpmapping)); if(ret==NULL) { CloseHandle(md); + UnmapViewOfFile(addr); return NULL; } ret->addr=addr;