diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 871444c55d298e71096a32c5466bc4730660ed6b..c83ae60690a07d9d15ecb29438fd94d739351c25 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -795,7 +795,7 @@ static JSBool js_get_msg_header_resolve(JSContext *cx, JSObject *obj, jsval id) memset(&remsg,0,sizeof(remsg)); remsg.hdr.number=(p->msg).hdr.thread_back; if(smb_getmsgidx(&(p->p->smb), &remsg)) - sprintf(reply_id,"<%s>",p->p->smb.last_error); + SAFEPRINTF(reply_id,"<%s>",p->p->smb.last_error); else get_msgid(scfg,p->p->smb.subnum,&remsg,reply_id,sizeof(reply_id)); JS_RESUMEREQUEST(cx, rc); @@ -1122,7 +1122,7 @@ js_put_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * JS_RESUMEREQUEST(cx, rc); if(!parse_header_object(cx, p, hdr, &msg, TRUE)) { - sprintf(p->smb.last_error,"Header parsing failure (required field missing?)"); + SAFECOPY(p->smb.last_error,"Header parsing failure (required field missing?)"); break; } rc=JS_SUSPENDREQUEST(cx); @@ -1490,41 +1490,43 @@ js_save_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(body[0]) truncsp(body); - if(savemsg(scfg, &(p->smb), &msg, client, body)==0) + if((p->status=savemsg(scfg, &(p->smb), &msg, client, body))==SMB_SUCCESS) { *rval = JSVAL_TRUE; - if(rcpt_list!=NULL) { /* Sending to a list of recipients */ + if(rcpt_list!=NULL) { /* Sending to a list of recipients */ - *rval = JSVAL_FALSE; /* failure, by default */ + *rval = JSVAL_FALSE; /* failure, by default */ + SAFECOPY(p->smb.last_error,"Recipient list parsing failure"); - memset(&rcpt_msg, 0, sizeof(rcpt_msg)); + memset(&rcpt_msg, 0, sizeof(rcpt_msg)); - for(i=0;i<rcpt_list_length;i++) { + for(i=0;i<rcpt_list_length;i++) { - if(!JS_GetElement(cx, rcpt_list, i, &val)) - break; - - if(!JSVAL_IS_OBJECT(val)) - break; + if(!JS_GetElement(cx, rcpt_list, i, &val)) + break; + + if(!JSVAL_IS_OBJECT(val)) + break; - if((p->status=smb_copymsgmem(&(p->smb), &rcpt_msg, &msg))!=SMB_SUCCESS) - break; + if((p->status=smb_copymsgmem(&(p->smb), &rcpt_msg, &msg))!=SMB_SUCCESS) + break; - if(!parse_recipient_object(cx, p, JSVAL_TO_OBJECT(val), &rcpt_msg)) - break; + if(!parse_recipient_object(cx, p, JSVAL_TO_OBJECT(val), &rcpt_msg)) + break; - if((p->status=smb_addmsghdr(&(p->smb), &rcpt_msg, SMB_SELFPACK))!=SMB_SUCCESS) - break; + if((p->status=smb_addmsghdr(&(p->smb), &rcpt_msg, SMB_SELFPACK))!=SMB_SUCCESS) + break; - smb_freemsgmem(&rcpt_msg); - } - smb_freemsgmem(&rcpt_msg); /* just in case we broke the loop */ + smb_freemsgmem(&rcpt_msg); + } + smb_freemsgmem(&rcpt_msg); /* just in case we broke the loop */ - if(i==rcpt_list_length) - *rval = JSVAL_TRUE; /* success */ + if(i==rcpt_list_length) + *rval = JSVAL_TRUE; /* success */ + } } } else - sprintf(p->smb.last_error,"Header parsing failure (required field missing?)"); + SAFECOPY(p->smb.last_error,"Header parsing failure (required field missing?)"); smb_freemsgmem(&msg);