diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h
index 062cf66ae4be31d64dbba1be6e4ae16cd648c197..84d57555556fec52130a0f6eb2ba98183ff3dfa2 100644
--- a/src/smblib/smbdefs.h
+++ b/src/smblib/smbdefs.h
@@ -189,7 +189,8 @@
 #define SENDERIPADDR		0x07		/* for tracing */
 #define SENDERHOSTNAME		0x08		/* for tracing */
 #define SENDERPROTOCOL		0x09		/* for tracing */
-#define SENDERPORT			0x0a		/* for tracing */
+#define SENDERPORT_BIN		0x0a		/* deprecated */
+#define SENDERPORT			0x0b		/* for tracing */
 
 #define AUTHOR				0x10
 #define AUTHORAGENT 		0x11
diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index 091355a79982e1fcbda70d4f02c73c6fe7308fa2..a2939bb0d88086919be40e7e3c74a20487c66ea6 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -54,6 +54,7 @@ char* SMBCALL smb_hfieldtype(ushort type)
 		case SENDERIPADDR:		return("SenderIpAddr");
 		case SENDERHOSTNAME:	return("SenderHostName");
 		case SENDERPROTOCOL:	return("SenderProtocol");
+		case SENDERPORT_BIN		return("SenderPortBin");
 		case SENDERPORT:		return("SenderPort");
 
 		case REPLYTO:			return("Reply-To");				/* RFC-compliant */
@@ -76,6 +77,7 @@ char* SMBCALL smb_hfieldtype(ushort type)
 		case SMB_EXPIRATION:	return("Expiration");
 		case SMB_PRIORITY:		return("Priority");
 		case SMB_COST:			return("Cost");
+		case FORWARDED:			return("Forwarded");
 
 		/* All X-FTN-* are RFC-compliant */
 		case FIDOCTRL:			return("X-FTN-Kludge");
@@ -166,11 +168,13 @@ char* SMBCALL smb_hashsource(smbmsg_t* msg, int source)
 /****************************************************************************/
 /* Converts when_t.zone into ASCII format                                   */
 /****************************************************************************/
-char* SMBCALL smb_zonestr(short zone, char* outstr)
+char* SMBCALL smb_zonestr(short zone, char* str)
 {
 	char*		plus;
-    static char str[32];
+    static char buf[32];
 
+	if(str==NULL)
+		str=buf;
 	switch((ushort)zone) {
 		case 0:     return("UTC");
 		case AST:   return("AST");
@@ -229,31 +233,27 @@ char* SMBCALL smb_zonestr(short zone, char* outstr)
 		plus="";
 	sprintf(str,"UTC%s%d:%02u", plus, zone/60, zone<0 ? (-zone)%60 : zone%60);
 
-	if(outstr==NULL)
-		return(str);
-	strcpy(outstr,str);
-	return(outstr);
+	return(str);
 }
 
 /****************************************************************************/
 /* Returns an ASCII string for FidoNet address 'addr'                       */
 /****************************************************************************/
-char* SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* outstr)
+char* SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* str)
 {
-	static char str[64];
+	static char buf[64];
     char point[25];
 
 	if(addr==NULL)
 		return("0:0/0");
+	if(str==NULL)
+		str=buf;
 	sprintf(str,"%hu:%hu/%hu",addr->zone,addr->net,addr->node);
 	if(addr->point) {
 		sprintf(point,".%hu",addr->point);
 		strcat(str,point); 
 	}
-	if(outstr==NULL)
-		return(str);
-	strcpy(outstr,str);
-	return(outstr);
+	return(str);
 }
 
 /****************************************************************************/