From c41d385f7c290331fb278cf97b367beff026cbda Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sat, 7 Dec 2002 07:32:28 +0000 Subject: [PATCH] Fixed bug in truncsp() added in rev 1.8 (needs to truncate at first CR). --- xtrn/sbl/smb2sbl.c | 58 +++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/xtrn/sbl/smb2sbl.c b/xtrn/sbl/smb2sbl.c index d81b5d32c4..402b1129e0 100644 --- a/xtrn/sbl/smb2sbl.c +++ b/xtrn/sbl/smb2sbl.c @@ -176,12 +176,16 @@ return(crc); /****************************************************************************/ /* Truncates white-space chars off end of 'str' */ +/* This is a *special* version of truncsp that truncates at first CR char */ /****************************************************************************/ static void truncsp(char *str) { - uint c; + uint org,c; + org=strlen(str); + str[strcspn(str,"\r")]=0; c=strlen(str); + memset(str+c,0,org-c); /* clear the remainder of the buffer */ while(c && (uchar)str[c-1]<=SP) c--; str[c]=0; } @@ -314,11 +318,12 @@ int main(int argc, char **argv) bbs.created=time(NULL); if(!bbs.birth) bbs.birth=bbs.created; - sprintf(bbs.user,"%-.25s",msg.from); } - sprintf(bbs.name,"%-.25s",msg.subj); + SAFECOPY(bbs.user,msg.from); + } + SAFECOPY(bbs.name,msg.subj); bbs.updated=time(NULL); bbs.misc|=FROM_SMB; - sprintf(bbs.userupdated,"%-.25s",msg.from); + SAFECOPY(bbs.userupdated,msg.from); buf=loadmsgtxt(msg,0); sysop=number=network=terminal=desc=0; l=0; @@ -329,8 +334,9 @@ int main(int argc, char **argv) l+=5; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.name,"%-.25s",buf+l); - truncsp(bbs.name); } + SAFECOPY(bbs.name,buf+l); + truncsp(bbs.name); + } if(!strnicmp(buf+l,"BIRTH:",6)) { l+=6; while(buf[l] && buf[l]<=SP && buf[l]!=CR) @@ -340,26 +346,26 @@ int main(int argc, char **argv) l+=9; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.software,"%-.15s",buf+l); + SAFECOPY(bbs.software,buf+l); truncsp(bbs.software); } if(!strnicmp(buf+l,"WEB-SITE:",9)) { l+=9; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.web_url,"%-.60s",buf+l); + SAFECOPY(bbs.web_url,buf+l); truncsp(bbs.web_url); } if(!strnicmp(buf+l,"E-MAIL:",7)) { l+=7; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.sysop_email,"%-.60s",buf+l); + SAFECOPY(bbs.sysop_email,buf+l); truncsp(bbs.sysop_email); } if(!strnicmp(buf+l,"SYSOP:",6)) { l+=6; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.sysop[sysop],"%-.25s",buf+l); + SAFECOPY(bbs.sysop[sysop],buf+l); truncsp(bbs.sysop[sysop]); if(sysop<MAX_SYSOPS-1) sysop++; } @@ -367,7 +373,7 @@ int main(int argc, char **argv) l+=7; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.number[number].modem.number,"%-.28s",buf+l); + SAFECOPY(bbs.number[number].modem.number,buf+l); truncsp(bbs.number[number].modem.number); if(number<MAX_NUMBERS-1) number++; } @@ -377,7 +383,7 @@ int main(int argc, char **argv) l++; i=number; if(i) i--; - sprintf(bbs.number[i].modem.desc,"%-.15s",buf+l); + SAFECOPY(bbs.number[i].modem.desc,buf+l); truncsp(bbs.number[i].modem.desc); } if(!strnicmp(buf+l,"LOCATION:",9)) { l+=9; @@ -385,7 +391,7 @@ int main(int argc, char **argv) l++; i=number; if(i) i--; - sprintf(bbs.number[i].modem.location,"%-.30s",buf+l); + SAFECOPY(bbs.number[i].modem.location,buf+l); truncsp(bbs.number[i].modem.location); } if(!strnicmp(buf+l,"MINRATE:",8)) { l+=8; @@ -405,7 +411,7 @@ int main(int argc, char **argv) l+=8; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.network[network],"%-.15s",buf+l); + SAFECOPY(bbs.network[network],buf+l); truncsp(bbs.network[network]); if(network<MAX_NETS-1) network++; } @@ -415,13 +421,13 @@ int main(int argc, char **argv) l++; i=network; if(i) i--; - sprintf(bbs.address[i],"%-.25s",buf+l); + SAFECOPY(bbs.address[i],buf+l); truncsp(bbs.address[i]); } if(!strnicmp(buf+l,"TERMINAL:",9)) { l+=9; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.terminal[terminal],"%-.15s",buf+l); + SAFECOPY(bbs.terminal[terminal],buf+l); truncsp(bbs.terminal[terminal]); if(terminal<MAX_TERMS-1) terminal++; } @@ -429,7 +435,7 @@ int main(int argc, char **argv) l+=5; while(buf[l] && buf[l]<=SP && buf[l]!=CR) l++; - sprintf(bbs.desc[desc],"%-.50s",buf+l); + SAFECOPY(bbs.desc[desc],buf+l); truncsp(bbs.desc[desc]); if(desc<4) desc++; } @@ -476,16 +482,14 @@ int main(int argc, char **argv) bbs.xtrns=atoi(buf+l); } while(buf[l] && buf[l]>=SP) { /* Go to end of line */ putchar(buf[l]); - l++; } - printf("\n"); } - // if(bbs.total_sysops<sysop) - bbs.total_sysops=sysop; - // if(bbs.total_networks<network) - bbs.total_networks=network; - // if(bbs.total_terminals<terminal) - bbs.total_terminals=terminal; - // if(bbs.total_numbers<number) - bbs.total_numbers=number; + l++; + } + printf("\n"); + } + bbs.total_sysops=sysop; + bbs.total_networks=network; + bbs.total_terminals=terminal; + bbs.total_numbers=number; fwrite(&bbs,sizeof(bbs_t),1,stream); FREE(buf); smb_freemsgmem(&msg); -- GitLab