From 4a68cdc3752e7a35bea03604ffaa6a8d8a81e336 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 10 Jan 2020 00:08:09 +0000
Subject: [PATCH] Report msgbase object related errors that cause the script to
 terminate.

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

diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index dbb60d43fc..8f16a0108a 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -2654,8 +2654,10 @@ js_email(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj = JSVAL_TO_OBJECT(argv[i])) == NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &resmb, &remsg, /* post: */NULL)) {
-				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg))
+				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg)) {
+					JS_ReportError(cx, "msg hdr object cannot be parsed");
 					return JS_FALSE;
+				}
 				remsg = &msg;
 			}
 		}
@@ -2725,8 +2727,10 @@ js_netmail(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj = JSVAL_TO_OBJECT(argv[i])) == NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &resmb, &remsg, /* post: */NULL)) {
-				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg))
+				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg)) {
+					JS_ReportError(cx, "msg hdr object cannot be parsed");
 					return JS_FALSE;
+				}
 				remsg = &msg;
 			}
 		}
@@ -3553,8 +3557,10 @@ js_post_msg(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &resmb, &remsg, /* post: */NULL)) {
-				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg))
+				if(!js_ParseMsgHeaderObject(cx, hdrobj, &msg)) {
+					JS_ReportError(cx, "msg hdr object cannot be parsed");
 					return JS_FALSE;
+				}
 				remsg = &msg;
 			}
 		}
@@ -3595,6 +3601,7 @@ js_show_msg(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &smb, &msg, &post)) {
+				JS_ReportError(cx, "msg hdr object lacks privates");
 				return JS_FALSE;
 			}
 		}
@@ -3633,6 +3640,7 @@ js_show_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &smb, &msg, NULL)) {
+				JS_ReportError(cx, "msg hdr object lacks privates");
 				return JS_FALSE;
 			}
 		} else if(JSVAL_IS_STRING(argv[n])) {
@@ -3681,6 +3689,7 @@ js_download_msg_attachments(JSContext *cx, uintN argc, jsval *arglist)
 			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL)
 				return JS_FALSE;
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &smb, &msg, NULL)) {
+				JS_ReportError(cx, "msg hdr object lacks privates");
 				return JS_FALSE;
 			}
 		} else if(JSVAL_IS_BOOLEAN(argv[n])) {
-- 
GitLab