From 86e74a5adf44c516af54879ac03d4ac77b454b0a Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Fri, 28 Oct 2022 19:14:56 -0700
Subject: [PATCH] Use redefined (legacy) LEN macros for v3.1x user.dat reading

---
 src/sbbs3/upgrade_to_v320.c | 103 ++++++++++++++++++++++--------------
 1 file changed, 64 insertions(+), 39 deletions(-)

diff --git a/src/sbbs3/upgrade_to_v320.c b/src/sbbs3/upgrade_to_v320.c
index 83effe1e81..0484d2d2c3 100644
--- a/src/sbbs3/upgrade_to_v320.c
+++ b/src/sbbs3/upgrade_to_v320.c
@@ -52,25 +52,50 @@ int lprintf(int level, const char *fmt, ...)
     return(puts(sbuf));
 }
 
+							/* String lengths								*/
+#define LEN31x_ALIAS		25	/* User alias									*/
+#define LEN31x_NAME		25	/* User name									*/
+#define LEN31x_HANDLE		8	/* User chat handle 							*/
+#define LEN31x_NOTE		30	/* User note									*/
+#define LEN31x_COMP		30	/* User computer description					*/
+#define LEN31x_COMMENT 	60	/* User comment 								*/
+#define LEN31x_NETMAIL 	60	/* NetMail forwarding address					*/
+#define LEN31x_OLDPASS		 8	/* User password (old)							*/
+#define LEN31x_PHONE		12	/* User phone number							*/
+#define LEN31x_BIRTH		 8	/* Birthday in MM/DD/YY format					*/
+#define LEN31x_ADDRESS 	30	/* User address 								*/
+#define LEN31x_LOCATION	30	/* Location (City, State)						*/
+#define LEN31x_ZIPCODE 	10	/* Zip/Postal code								*/
+#define LEN31x_MODEM		 8	/* User modem type description					*/
+#define LEN31x_CDT			20	/* Maximum credit length: 18446744073709551616	*/
+#define LEN31x_MAIN_CMD	8	/* Unused Storage in user.dat					*/
+#define LEN31x_COLS		3
+#define LEN31x_ROWS		3
+#define LEN31x_PASS		40
+#define LEN31x_SCAN_CMD	15
+#define LEN31x_IPADDR		45
+#define LEN31x_CID 		45	/* Caller ID (phone number) 					*/
+
+
 /****************************************************************************/
 /* This is a list of offsets into the USER.DAT file for different variables */
 /* that are stored (for each user)											*/
 /****************************************************************************/
 #define U_ALIAS 	0					/* Offset to alias */
-#define U_NAME		U_ALIAS+LEN_ALIAS  /* Offset to name */
-#define U_HANDLE	U_NAME+LEN_NAME
-#define U_NOTE		U_HANDLE+LEN_HANDLE+2
-#define U_COMP		U_NOTE+LEN_NOTE
-#define U_COMMENT	U_COMP+LEN_COMP+2
+#define U_NAME		U_ALIAS+LEN31x_ALIAS  /* Offset to name */
+#define U_HANDLE	U_NAME+LEN31x_NAME
+#define U_NOTE		U_HANDLE+LEN31x_HANDLE+2
+#define U_COMP		U_NOTE+LEN31x_NOTE
+#define U_COMMENT	U_COMP+LEN31x_COMP+2
 
-#define U_NETMAIL	U_COMMENT+LEN_COMMENT+2
+#define U_NETMAIL	U_COMMENT+LEN31x_COMMENT+2
 
-#define U_ADDRESS	U_NETMAIL+LEN_NETMAIL+2
-#define U_LOCATION	U_ADDRESS+LEN_ADDRESS
-#define U_ZIPCODE	U_LOCATION+LEN_LOCATION
+#define U_ADDRESS	U_NETMAIL+LEN31x_NETMAIL+2
+#define U_LOCATION	U_ADDRESS+LEN31x_ADDRESS
+#define U_ZIPCODE	U_LOCATION+LEN31x_LOCATION
 
-#define U_OLDPASS	U_ZIPCODE+LEN_ZIPCODE+2
-#define U_PHONE  	U_OLDPASS+LEN_OLDPASS  	/* Offset to phone-number */
+#define U_OLDPASS	U_ZIPCODE+LEN31x_ZIPCODE+2
+#define U_PHONE  	U_OLDPASS+LEN31x_OLDPASS  	/* Offset to phone-number */
 #define U_BIRTH  	U_PHONE+12 		/* Offset to users birthday	*/
 #define U_MODEM     U_BIRTH+8
 #define U_LASTON	U_MODEM+8
@@ -111,14 +136,14 @@ int lprintf(int level, const char *fmt, ...)
 #define U_CURSUB	U_LEECH+2  	/* Current sub (internal code)  */
 #define U_CURXTRN	U_CURSUB+16 /* Current xtrn (internal code) */
 #define U_ROWS		U_CURXTRN+8+2
-#define U_COLS		U_ROWS+LEN_ROWS
-#define U_CDT		U_COLS+LEN_COLS	/* unused */
-#define U_MAIN_CMD	U_CDT+LEN_CDT
-#define U_PASS		U_MAIN_CMD+LEN_MAIN_CMD
-#define U_FREECDT	U_PASS+LEN_PASS+2
-#define U_SCAN_CMD	U_FREECDT+LEN_CDT  				/* unused */
-#define U_IPADDR	U_SCAN_CMD+LEN_SCAN_CMD
-#define U_OLDFREECDT U_IPADDR+LEN_IPADDR+2			/* unused */
+#define U_COLS		U_ROWS+LEN31x_ROWS
+#define U_CDT		U_COLS+LEN31x_COLS	/* unused */
+#define U_MAIN_CMD	U_CDT+LEN31x_CDT
+#define U_PASS		U_MAIN_CMD+LEN31x_MAIN_CMD
+#define U_FREECDT	U_PASS+LEN31x_PASS+2
+#define U_SCAN_CMD	U_FREECDT+LEN31x_CDT  				/* unused */
+#define U_IPADDR	U_SCAN_CMD+LEN31x_SCAN_CMD
+#define U_OLDFREECDT U_IPADDR+LEN31x_IPADDR+2			/* unused */
 #define U_FLAGS3	U_OLDFREECDT+10 	/* Flag set #3 */
 #define U_FLAGS4	U_FLAGS3+8 	/* Flag set #4 */
 #define U_XEDIT 	U_FLAGS4+8 	/* External editor (code  */
@@ -246,23 +271,23 @@ static int v31x_parseuserdat(scfg_t* cfg, char *userdat, user_t *user)
 	user->number=user_number;	/* Signal of success */
 
 	/* order of these function calls is irrelevant */
-	getrec(userdat,U_ALIAS,LEN_ALIAS,user->alias);
-	getrec(userdat,U_NAME,LEN_NAME,user->name);
-	getrec(userdat,U_HANDLE,LEN_HANDLE,user->handle);
-	getrec(userdat,U_NOTE,LEN_NOTE,user->note);
-	getrec(userdat,U_COMP,LEN_COMP,user->comp);
-	getrec(userdat,U_COMMENT,LEN_COMMENT,user->comment);
-	getrec(userdat,U_NETMAIL,LEN_NETMAIL,user->netmail);
-	getrec(userdat,U_ADDRESS,LEN_ADDRESS,user->address);
-	getrec(userdat,U_LOCATION,LEN_LOCATION,user->location);
-	getrec(userdat,U_ZIPCODE,LEN_ZIPCODE,user->zipcode);
-	getrec(userdat,U_PASS,LEN_PASS,user->pass);
+	getrec(userdat,U_ALIAS,LEN31x_ALIAS,user->alias);
+	getrec(userdat,U_NAME,LEN31x_NAME,user->name);
+	getrec(userdat,U_HANDLE,LEN31x_HANDLE,user->handle);
+	getrec(userdat,U_NOTE,LEN31x_NOTE,user->note);
+	getrec(userdat,U_COMP,LEN31x_COMP,user->comp);
+	getrec(userdat,U_COMMENT,LEN31x_COMMENT,user->comment);
+	getrec(userdat,U_NETMAIL,LEN31x_NETMAIL,user->netmail);
+	getrec(userdat,U_ADDRESS,LEN31x_ADDRESS,user->address);
+	getrec(userdat,U_LOCATION,LEN31x_LOCATION,user->location);
+	getrec(userdat,U_ZIPCODE,LEN31x_ZIPCODE,user->zipcode);
+	getrec(userdat,U_PASS,LEN31x_PASS,user->pass);
 	if(user->pass[0] == 0)	// Backwards compatibility hack
-		getrec(userdat, U_OLDPASS, LEN_OLDPASS, user->pass);
-	getrec(userdat,U_PHONE,LEN_PHONE,user->phone);
-	getrec(userdat,U_BIRTH,LEN_BIRTH,user->birth);
-	getrec(userdat,U_MODEM,LEN_MODEM,user->modem);
-	getrec(userdat,U_IPADDR,LEN_IPADDR,user->ipaddr);
+		getrec(userdat, U_OLDPASS, LEN31x_OLDPASS, user->pass);
+	getrec(userdat,U_PHONE,LEN31x_PHONE,user->phone);
+	getrec(userdat,U_BIRTH,LEN31x_BIRTH,user->birth);
+	getrec(userdat,U_MODEM,LEN31x_MODEM,user->modem);
+	getrec(userdat,U_IPADDR,LEN31x_IPADDR,user->ipaddr);
 	getrec(userdat,U_LASTON,8,str); user->laston=ahtoul(str);
 	getrec(userdat,U_FIRSTON,8,str); user->firston=ahtoul(str);
 	getrec(userdat,U_EXPIRE,8,str); user->expire=ahtoul(str);
@@ -288,7 +313,7 @@ static int v31x_parseuserdat(scfg_t* cfg, char *userdat, user_t *user)
 	getrec(userdat,U_ULS,5,str); user->uls=atoi(str);
 	getrec(userdat,U_DLB,10,str); user->dlb=parse_byte_count(str, 1);
 	getrec(userdat,U_DLS,5,str); user->dls=atoi(str);
-	getrec(userdat,U_CDT,LEN_CDT,str);
+	getrec(userdat,U_CDT,LEN31x_CDT,str);
 	if(str[0] < '0' || str[0] > '9')
 		getrec(userdat,U_OLDCDT,10,str);
 	user->cdt=strtoull(str, NULL, 10);
@@ -301,11 +326,11 @@ static int v31x_parseuserdat(scfg_t* cfg, char *userdat, user_t *user)
 	getrec(userdat,U_EXEMPT,8,str); user->exempt=ahtoul(str)&0x03ffffff;
 	getrec(userdat,U_REST,8,str); user->rest=ahtoul(str)&0x03ffffff;
 	if(getrec(userdat,U_OLDROWS,2,str) <= 0) // Moved to new location
-		getrec(userdat, U_ROWS, LEN_ROWS, str);
+		getrec(userdat, U_ROWS, LEN31x_ROWS, str);
 	user->rows = atoi(str);
 	if(user->rows && user->rows < TERM_ROWS_MIN)
 		user->rows = TERM_ROWS_MIN;
-	getrec(userdat, U_COLS, LEN_COLS, str);
+	getrec(userdat, U_COLS, LEN31x_COLS, str);
 	user->cols = atoi(str);
 	if(user->cols && user->cols < TERM_COLS_MIN)
 		user->cols = TERM_COLS_MIN;
@@ -325,7 +350,7 @@ static int v31x_parseuserdat(scfg_t* cfg, char *userdat, user_t *user)
 	getrec(userdat,U_CURDIR,sizeof(user->curdir)-1,user->curdir);
 	getrec(userdat,U_CURXTRN,8,user->curxtrn);
 
-	getrec(userdat,U_FREECDT,LEN_CDT,str);
+	getrec(userdat,U_FREECDT,LEN31x_CDT,str);
 	if(str[0] < '0' || str[0] > '9')
 		getrec(userdat,U_OLDFREECDT,10,str);
 	user->freecdt=strtoull(str, NULL, 10);
-- 
GitLab