diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 6309e8bbfdbddc0430ff0aa30cc69d33761eec3a..68bf4e9e2c812b1274429a7e62272d73cdb7c50e 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -69,7 +69,7 @@ uint DLLCALL matchuser(scfg_t* cfg, const char *name, BOOL sysop_alias) (!stricmp(name,"SYSOP") || !stricmp(name,"POSTMASTER") || !stricmp(name,cfg->sys_id))) return(1); - sprintf(str,"%suser/name.dat",cfg->data_dir); + SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir); if((file=nopen(str,O_RDONLY))==-1) return(0); length=(long)filelength(file); @@ -135,7 +135,7 @@ uint DLLCALL total_users(scfg_t* cfg) if(!VALID_CFG(cfg)) return(0); - sprintf(str,"%suser/user.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir); if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) return(0); length=(long)filelength(file); @@ -164,7 +164,7 @@ uint DLLCALL lastuser(scfg_t* cfg) if(!VALID_CFG(cfg)) return(0); - sprintf(str,"%suser/user.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir); if((length=(long)flength(str))>0) return((uint)(length/U_LEN)); return(0); @@ -182,7 +182,7 @@ BOOL DLLCALL del_lastuser(scfg_t* cfg) if(!VALID_CFG(cfg)) return(FALSE); - sprintf(str,"%suser/user.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir); if((file=nopen(str,O_RDWR|O_DENYNONE))==-1) return(FALSE); length=(long)filelength(file); @@ -215,7 +215,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user) if(!VALID_CFG(cfg) || user_number<1) return(-1); - sprintf(userdat,"%suser/user.dat",cfg->data_dir); + SAFEPRINTF(userdat,"%suser/user.dat",cfg->data_dir); if((file=nopen(userdat,O_RDONLY|O_DENYNONE))==-1) return(errno); @@ -502,7 +502,7 @@ int DLLCALL putuserdat(scfg_t* cfg, user_t* user) putrec(userdat,U_UNUSED,U_LEN-(U_UNUSED)-2,crlf); putrec(userdat,U_UNUSED+(U_LEN-(U_UNUSED)-2),2,crlf); - sprintf(str,"%suser/user.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir); if((file=nopen(str,O_RDWR|O_CREAT|O_DENYNONE))==-1) { return(errno); } @@ -556,7 +556,7 @@ char* DLLCALL username(scfg_t* cfg, int usernumber, char *name) name[0]=0; return(name); } - sprintf(str,"%suser/name.dat",cfg->data_dir); + SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir); if(flength(str)<1L) { name[0]=0; return(name); @@ -595,7 +595,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name) if(!VALID_CFG(cfg) || name==NULL || number<1) return(-1); - sprintf(str,"%suser/name.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/name.dat", cfg->data_dir); if((file=nopen(str,O_RDWR|O_CREAT))==-1) return(errno); length=(long)filelength(file); @@ -610,7 +610,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name) return(-3); } if(length<(((long)number-1)*(LEN_ALIAS+2))) { - sprintf(str,"%*s",LEN_ALIAS,nulstr); + SAFEPRINTF2(str,"%*s",LEN_ALIAS,nulstr); memset(str,ETX,LEN_ALIAS); strcat(str,crlf); lseek(file,0L,SEEK_END); @@ -687,7 +687,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, int* fdp) return(-1); memset(node,0,sizeof(node_t)); - sprintf(str,"%snode.dab",cfg->ctrl_dir); + SAFEPRINTF(str,"%snode.dab",cfg->ctrl_dir); if((file=nopen(str,O_RDWR|O_DENYNONE))==-1) return(errno); @@ -850,21 +850,21 @@ char* DLLCALL nodestatus(scfg_t* cfg, node_t* node, char* buf, size_t buflen) strcpy(str,"Networking"); break; case NODE_LOGON: - sprintf(str,"At logon prompt %s" + SAFEPRINTF(str,"At logon prompt %s" ,node_connection_desc(node->connection, tmp)); break; case NODE_EVENT_WAITING: strcpy(str,"Waiting for all nodes to become inactive"); break; case NODE_EVENT_LIMBO: - sprintf(str,"Waiting for node %d to finish external event" + SAFEPRINTF(str,"Waiting for node %d to finish external event" ,node->aux); break; case NODE_EVENT_RUNNING: strcpy(str,"Running external event"); break; case NODE_NEWUSER: - sprintf(str,"New user applying for access %s" + SAFEPRINTF(str,"New user applying for access %s" ,node_connection_desc(node->connection, tmp)); break; case NODE_QUIET: @@ -1058,7 +1058,7 @@ uint DLLCALL userdatdupe(scfg_t* cfg, uint usernumber, uint offset, uint datlen return(0); truncsp(dat); - sprintf(str,"%suser/user.dat", cfg->data_dir); + SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir); if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) return(0); length=(long)filelength(file); @@ -1118,7 +1118,7 @@ int DLLCALL putsmsg(scfg_t* cfg, int usernumber, char *strin) if(*strin==0) return(0); - sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); + SAFEPRINTF2(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) { return(errno); } @@ -1166,7 +1166,7 @@ char* DLLCALL getsmsg(scfg_t* cfg, int usernumber) } } - sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); + SAFEPRINTF2(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); if(flength(str)<1L) return(NULL); if((file=nopen(str,O_RDWR))==-1) @@ -1203,7 +1203,7 @@ char* DLLCALL getnmsg(scfg_t* cfg, int node_num) node.misc&=~NODE_NMSG; /* clear the NMSG flag */ putnodedat(cfg,node_num,&node,file); - sprintf(str,"%smsgs/n%3.3u.msg",cfg->data_dir,node_num); + SAFEPRINTF2(str,"%smsgs/n%3.3u.msg",cfg->data_dir,node_num); if(flength(str)<1L) return(NULL); if((file=nopen(str,O_RDWR))==-1) @@ -1244,7 +1244,7 @@ int DLLCALL putnmsg(scfg_t* cfg, int num, char *strin) if(*strin==0) return(0); - sprintf(str,"%smsgs/n%3.3u.msg",cfg->data_dir,num); + SAFEPRINTF2(str,"%smsgs/n%3.3u.msg",cfg->data_dir,num); if((file=nopen(str,O_WRONLY|O_CREAT))==-1) return(errno); lseek(file,0L,SEEK_END); /* Instead of opening with O_APPEND */ @@ -1854,7 +1854,7 @@ int DLLCALL getuserrec(scfg_t* cfg, int usernumber,int start, int length, char * if(!VALID_CFG(cfg) || usernumber<1 || str==NULL) return(-1); - sprintf(path,"%suser/user.dat",cfg->data_dir); + SAFEPRINTF(path,"%suser/user.dat",cfg->data_dir); if((file=nopen(path,O_RDONLY|O_DENYNONE))==-1) return(errno); if(usernumber<1 @@ -1908,7 +1908,7 @@ int DLLCALL putuserrec(scfg_t* cfg, int usernumber,int start, uint length, const if(!VALID_CFG(cfg) || usernumber<1 || str==NULL) return(-1); - sprintf(str2,"%suser/user.dat",cfg->data_dir); + SAFEPRINTF(str2,"%suser/user.dat",cfg->data_dir); if((file=nopen(str2,O_RDWR|O_DENYNONE))==-1) return(errno); @@ -1960,7 +1960,7 @@ ulong DLLCALL adjustuserrec(scfg_t* cfg, int usernumber, int start, int length, if(!VALID_CFG(cfg) || usernumber<1) return(0); - sprintf(path,"%suser/user.dat",cfg->data_dir); + SAFEPRINTF(path,"%suser/user.dat",cfg->data_dir); if((file=nopen(path,O_RDWR|O_DENYNONE))==-1) return(0); @@ -2223,7 +2223,7 @@ char* DLLCALL alias(scfg_t* cfg, const char* name, char* buf) p=(char*)name; - sprintf(fname,"%salias.cfg",cfg->ctrl_dir); + SAFEPRINTF(fname,"%salias.cfg",cfg->ctrl_dir); if((fp=fopen(fname,"r"))==NULL) return((char*)name); @@ -2289,7 +2289,7 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) if(!VALID_CFG(cfg) || user==NULL) return(-1); - sprintf(str,"%suser/name.dat",cfg->data_dir); + SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir); if(fexist(str)) { if((stream=fnopen(&file,str,O_RDONLY))==NULL) { return(errno); @@ -2333,24 +2333,27 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) if((err=putuserdat(cfg,user))!=0) return(err); - sprintf(str,"%sfile/%04u.in",cfg->data_dir,user->number); /* delete any files */ + SAFEPRINTF2(str,"%sfile/%04u.in",cfg->data_dir,user->number); /* delete any files */ delfiles(str,ALLFILES); /* waiting for user */ rmdir(str); - sprintf(tmp,"%04u.*",user->number); - sprintf(str,"%sfile",cfg->data_dir); + SAFEPRINTF(tmp,"%04u.*",user->number); + SAFEPRINTF(str,"%sfile",cfg->data_dir); delfiles(str,tmp); - sprintf(str,"%suser",cfg->data_dir); + SAFEPRINTF(str,"%suser",cfg->data_dir); delfiles(str,tmp); + SAFEPRINTF2(str,"%suser/%04u",cfg->data_dir,user->number); + delfiles(str,ALLFILES); + rmdir(str); - sprintf(str,"%suser/ptrs/%04u.ixb",cfg->data_dir,user->number); /* msg ptrs */ + SAFEPRINTF2(str,"%suser/ptrs/%04u.ixb",cfg->data_dir,user->number); /* msg ptrs */ remove(str); - sprintf(str,"%smsgs/%04u.msg",cfg->data_dir,user->number); /* delete short msg */ + SAFEPRINTF2(str,"%smsgs/%04u.msg",cfg->data_dir,user->number); /* delete short msg */ remove(str); /* Update daily statistics database (for system and node) */ for(i=0;i<2;i++) { - sprintf(str,"%sdsts.dab",i ? cfg->ctrl_dir : cfg->node_dir); + SAFEPRINTF(str,"%sdsts.dab",i ? cfg->ctrl_dir : cfg->node_dir); if((file=nopen(str,O_RDWR))==-1) continue; memset(&stats,0,sizeof(stats)); @@ -2572,7 +2575,7 @@ BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host if(ip_addr==NULL) return(FALSE); - sprintf(ip_can,"%sip.can",cfg->text_dir); + SAFEPRINTF(ip_can,"%sip.can",cfg->text_dir); if(fname==NULL) fname=ip_can;