From b13afba08d8618ab55c04a831586c9fd6a5ab2de Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Mon, 25 Feb 2008 02:12:15 +0000 Subject: [PATCH] Changed SENDERPORT header field to ASCII instead of BINARY. Added support for FORWARDED header field to smb_hfieldtype(). Better thread-safety for smb_zonestr() and smb_faddrtoa(). --- src/smblib/smbdefs.h | 3 ++- src/smblib/smbstr.c | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h index 062cf66ae4..84d5755555 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 091355a799..a2939bb0d8 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); } /****************************************************************************/ -- GitLab