diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c
index 32dcdf0b40b7cfa97264012e741311ab6c72890e..4906514425c5060b2c71ae8176ac43c168f2cfe0 100644
--- a/src/sbbs3/js_msgbase.c
+++ b/src/sbbs3/js_msgbase.c
@@ -1468,11 +1468,11 @@ js_get_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 	/* Now parse message offset/id and get message */
 	if(JSVAL_IS_NUMBER(argv[n])) {
 		if(by_offset) {							/* Get by offset */
-			if(!JS_ValueToInt32(cx,argv[n],(int32*)&(p->msg).offset))
+			if(!JS_ValueToInt32(cx,argv[n++],(int32*)&(p->msg).offset))
 				return JS_FALSE;
 		}
 		else {									/* Get by number */
-			if(!JS_ValueToInt32(cx,argv[n],(int32*)&(p->msg).hdr.number))
+			if(!JS_ValueToInt32(cx,argv[n++],(int32*)&(p->msg).hdr.number))
 				return JS_FALSE;
 		}
 
@@ -1496,7 +1496,7 @@ js_get_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 		smb_unlockmsghdr(&(p->p->smb),&(p->msg)); 
 		JS_RESUMEREQUEST(cx, rc);
 	} else if(JSVAL_IS_STRING(argv[n]))	{		/* Get by ID */
-		JSSTRING_TO_MSTRING(cx, JSVAL_TO_STRING(argv[n]), cstr, NULL);
+		JSSTRING_TO_MSTRING(cx, JSVAL_TO_STRING(argv[n++]), cstr, NULL);
 		HANDLE_PENDING(cx);
 		rc=JS_SUSPENDREQUEST(cx);
 		if((p->p->status=smb_getmsghdr_by_msgid(&(p->p->smb),&(p->msg)
@@ -1788,6 +1788,13 @@ js_put_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 
 	hdr = JSVAL_TO_OBJECT(argv[n++]);
 
+	privatemsg_t* mp;
+	mp=(privatemsg_t*)JS_GetPrivate(cx,hdr);
+	if(mp->expand_fields) {
+		JS_ReportError(cx, "Message header has 'expanded fields'", WHERE);
+		return JS_FALSE;
+	}
+
 	rc=JS_SUSPENDREQUEST(cx);
 	if((p->status=smb_getmsgidx(&(p->smb), &msg))!=SMB_SUCCESS) {
 		JS_RESUMEREQUEST(cx, rc);