From 3b6b1ae79716ebb77e5360b77fa51045acdaa087 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 15 Nov 2017 07:12:52 +0000
Subject: [PATCH] Fix long standing bug when setting misc, useron, and aux
 values: was truncating numeric value to 8-bits (0-255). Added support for
 hexadecimal notation (prefix with 0x) while I was at it.

---
 src/sbbs3/node.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/sbbs3/node.c b/src/sbbs3/node.c
index 05fd853f15..a323939c87 100644
--- a/src/sbbs3/node.c
+++ b/src/sbbs3/node.c
@@ -1,6 +1,5 @@
-/* node.c */
-
 /* Synchronet BBS Node control program */
+// vi: tabstop=4
 
 /* $Id$ */
 
@@ -534,28 +533,28 @@ int main(int argc, char **argv)
 				onoff=2;
 			else if(!strnicmp(argv[i],"STATUS=",7)) {
 				mode=MODE_STATUS;
-				value=atoi(argv[i]+7); }
+				value=strtoul(argv[i]+7, NULL, 0); }
 			else if(!strnicmp(argv[i],"ERRORS=",7)) {
 				mode=MODE_ERRORS;
-				value=atoi(argv[i]+7); }
+				value=strtoul(argv[i]+7, NULL, 0); }
 			else if(!strnicmp(argv[i],"USERON=",7)) {
 				mode=MODE_USERON;
-				value=atoi(argv[i]+7); }
+				value=strtoul(argv[i]+7, NULL, 0); }
 			else if(!strnicmp(argv[i],"ACTION=",7)) {
 				mode=MODE_ACTION;
-				value=atoi(argv[i]+7); }
+				value=strtoul(argv[i]+7, NULL, 0); }
 			else if(!strnicmp(argv[i],"CONN=",5)) {
 				mode=MODE_CONN;
-				value=atoi(argv[i]+5); }
+				value=strtoul(argv[i]+5, NULL, 0); }
 			else if(!strnicmp(argv[i],"MISC=",5)) {
 				mode=MODE_MISC;
-				value=atoi(argv[i]+5); }
+				value=strtoul(argv[i]+5, NULL, 0); }
 			else if(!strnicmp(argv[i],"AUX=",4)) {
 				mode=MODE_AUX;
-				value=atoi(argv[i]+4); }
+				value=strtoul(argv[i]+4, NULL, 0); }
 			else if(!strnicmp(argv[i],"EXTAUX=",7)) {
 				mode=MODE_EXTAUX;
-				value=atoi(argv[i]+7); }
+				value=strtoul(argv[i]+7, NULL, 0); }
 			}
 		if(mode!=MODE_LIST)
 			modify=1;
@@ -604,16 +603,16 @@ int main(int argc, char **argv)
 								node.action=(uchar)value;
 								break;
 							case MODE_USERON:
-								node.useron=(uchar)value;
+								node.useron=(uint16_t)value;
 								break;
 							case MODE_MISC:
-								node.misc=(uchar)value;
+								node.misc=(uint16_t)value;
 								break;
 							case MODE_CONN:
-								node.connection=(uchar)value;
+								node.connection=(uint16_t)value;
 								break;
 							case MODE_AUX:
-								node.aux=(uchar)value;
+								node.aux=(uint16_t)value;
 								break;
 							case MODE_EXTAUX:
 								node.extaux=value;
-- 
GitLab