diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index abefc131f95ab1bed3eb157ca3fcf49eed1b16fe..81f65c326efba8193a3c40f65c580ce8d1dc808a 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -50,6 +50,7 @@
 #define FNOPEN_BUF_SIZE		(2*1024)
 
 #define MAX_FILENAME_LEN		64
+#define MAX_FILEEXT_LEN			15
 #define ILLEGAL_FILENAME_CHARS	"\\/|<>:\";,%?*"
 #define SAFEST_FILENAME_CHARS	"-._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
 
@@ -925,7 +926,7 @@ typedef struct {						/* Users information */
 			phone[LEN_PHONE+1],			/* Phone number xxx-xxx-xxxx format */
 			modem[LEN_MODEM+1],			/* Modem type - 8 chars max */
 			netmail[LEN_NETMAIL+1], 	/* NetMail forwarding address */
-			tmpext[4],					/* QWK Packet extension */
+			tmpext[MAX_FILEEXT_LEN+1],	/* QWK Packet / Temp file type */
 			comment[LEN_COMMENT+1], 	/* Private comment about user */
 			cursub[LEN_EXTCODE+1],		/* Current sub-board internal code */
 			curdir[LEN_EXTCODE+1],		/* Current directory internal code */
diff --git a/src/sbbs3/scfg/scfgxfr1.c b/src/sbbs3/scfg/scfgxfr1.c
index fa2d48b8e9069f24da62e79d7cc4f49ebb5198ae..808a596701633d7c5e846bb941c55d871a5840d8 100644
--- a/src/sbbs3/scfg/scfgxfr1.c
+++ b/src/sbbs3/scfg/scfgxfr1.c
@@ -329,7 +329,7 @@ void xfer_opts()
 			case __COUNTER__: 	/* Viewable file types */
 				while(1) {
 					for(i=0;i<cfg.total_fviews && i<MAX_OPTS;i++)
-						sprintf(opt[i],"%-3.3s  %-40s",cfg.fview[i]->ext,cfg.fview[i]->cmd);
+						sprintf(opt[i],"%-*s %-40s", MAX_FILEEXT_LEN, cfg.fview[i]->ext, cfg.fview[i]->cmd);
 					opt[i][0]=0;
 					i=WIN_RHT|WIN_ACT|WIN_SAV;	/* save cause size can change */
 					if(cfg.total_fviews<MAX_OPTS)
@@ -465,7 +465,7 @@ void xfer_opts()
 			case __COUNTER__:    /* Testable file types */
 				while(1) {
 					for(i=0;i<cfg.total_ftests && i<MAX_OPTS;i++)
-						sprintf(opt[i],"%-3.3s  %-40s",cfg.ftest[i]->ext,cfg.ftest[i]->cmd);
+						sprintf(opt[i],"%-*s %-40s", MAX_FILEEXT_LEN, cfg.ftest[i]->ext, cfg.ftest[i]->cmd);
 					opt[i][0]=0;
 					i=WIN_RHT|WIN_ACT|WIN_SAV;	/* save cause size can change */
 					if(cfg.total_ftests<MAX_OPTS)
@@ -599,7 +599,7 @@ void xfer_opts()
 			case __COUNTER__:    /* Download Events */
 				while(1) {
 					for(i=0;i<cfg.total_dlevents && i<MAX_OPTS;i++)
-						sprintf(opt[i],"%-3.3s  %-40s",cfg.dlevent[i]->ext,cfg.dlevent[i]->cmd);
+						sprintf(opt[i],"%-*s %-40s", MAX_FILEEXT_LEN, cfg.dlevent[i]->ext, cfg.dlevent[i]->cmd);
 					opt[i][0]=0;
 					i=WIN_RHT|WIN_ACT|WIN_SAV;	/* save cause size can change */
 					if(cfg.total_dlevents<MAX_OPTS)
@@ -747,8 +747,8 @@ void xfer_opts()
 			case __COUNTER__:	 /* Extractable file types */
 				while(1) {
 					for(i=0;i<cfg.total_fextrs && i<MAX_OPTS;i++)
-						sprintf(opt[i],"%-3.3s  %-40s"
-							,cfg.fextr[i]->ext,cfg.fextr[i]->cmd);
+						sprintf(opt[i],"%-*s %-40s"
+							,MAX_FILEEXT_LEN, cfg.fextr[i]->ext, cfg.fextr[i]->cmd);
 					opt[i][0]=0;
 					i=WIN_RHT|WIN_ACT|WIN_SAV;  /* save cause size can change */
 					if(cfg.total_fextrs<MAX_OPTS)
@@ -882,7 +882,7 @@ void xfer_opts()
 			case __COUNTER__:	 /* Compressible file types */
 				while(1) {
 					for(i=0;i<cfg.total_fcomps && i<MAX_OPTS;i++)
-						sprintf(opt[i],"%-3.3s  %-40s",cfg.fcomp[i]->ext,cfg.fcomp[i]->cmd);
+						sprintf(opt[i],"%-*s %-40s",MAX_FILEEXT_LEN, cfg.fcomp[i]->ext, cfg.fcomp[i]->cmd);
 					opt[i][0]=0;
 					i=WIN_RHT|WIN_ACT|WIN_SAV;	/* save cause size can change */
 					if(cfg.total_fcomps<MAX_OPTS)
diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h
index 37aa071d8caca9a298e33d46725149ccb9039ebd..f11c56cf8140df315a1535a639ce6e367928ecab 100644
--- a/src/sbbs3/scfgdefs.h
+++ b/src/sbbs3/scfgdefs.h
@@ -239,7 +239,7 @@ typedef struct {							/* Transfer Protocol information */
 } prot_t;
 
 typedef struct {	                        /* Extractable file types */
-	char		ext[4]; 					/* Extension */
+	char		ext[MAX_FILEEXT_LEN+1]; 	/* Extension */
 	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
 				cmd[LEN_CMD+1]; 			/* Command line */
 	uchar		ar[LEN_ARSTR+1];
@@ -247,7 +247,7 @@ typedef struct {	                        /* Extractable file types */
 } fextr_t;
 
 typedef struct {							/* Compressable file types */
-	char		ext[4]; 					/* Extension */
+	char		ext[MAX_FILEEXT_LEN+1]; 	/* Extension */
 	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
 				cmd[LEN_CMD+1]; 			/* Command line */
 	uchar		ar[LEN_ARSTR+1];
@@ -255,7 +255,7 @@ typedef struct {							/* Compressable file types */
 } fcomp_t;
 
 typedef struct {							/* Viewable file types */
-	char		ext[4]; 					/* Extension */
+	char		ext[MAX_FILEEXT_LEN+1]; 	/* Extension */
 	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
 				cmd[LEN_CMD+1]; 			/* Command line */
 	uchar		ar[LEN_ARSTR+1];
@@ -263,7 +263,7 @@ typedef struct {							/* Viewable file types */
 } fview_t;
 
 typedef struct {							/* Testable file types */
-	char		ext[4]; 					/* Extension */
+	char		ext[MAX_FILEEXT_LEN+1]; 	/* Extension */
 	char		arstr[LEN_ARSTR+1],			/* Access requirement */
 				cmd[LEN_CMD+1], 			/* Command line */
 				workstr[41];				/* String to display while working */
@@ -272,7 +272,7 @@ typedef struct {							/* Testable file types */
 } ftest_t;
 
 typedef struct {							/* Download events */
-	char		ext[4];
+	char		ext[MAX_FILEEXT_LEN+1]; 	/* Extension */
 	char		arstr[LEN_ARSTR+1],			/* Access requirement */
 				cmd[LEN_CMD+1], 			/* Command line */
 				workstr[41];				/* String to display while working */
@@ -325,7 +325,7 @@ typedef struct {							/* QWK Network Hub */
 				call[LEN_CMD+1],			/* Call-out command line to execute */
 				pack[LEN_CMD+1],			/* Packing command line */
 				unpack[LEN_CMD+1];			/* Unpacking command line */
-	char		fmt[4]; 					/* Archive format */
+	char		fmt[MAX_FILEEXT_LEN+1]; 	/* Archive format */
 	uint16_t	time,						/* Time to call-out */
 				node,						/* Node to do the call-out */
 				freq,						/* Frequency of call-outs */