diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp index a24e3b6f47930af9be633b0a2674690dba82d8a8..6afeb86e4562180db04ff6e04a9675584efff7ef 100644 --- a/src/sbbs3/email.cpp +++ b/src/sbbs3/email.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2011 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2012 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -89,10 +89,10 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) bputs(text[UnknownUser]); return(false); } - if(l&NETMAIL && cfg.sys_misc&SM_FWDTONET) { + if((l&NETMAIL) && (cfg.sys_misc&SM_FWDTONET)) { getuserrec(&cfg,usernumber,U_NETMAIL,LEN_NETMAIL,str); bprintf(text[UserNetMail],str); - if(text[ForwardMailQ][0]==0 || yesno(text[ForwardMailQ])) /* Forward to netmail address */ + if(usernumber==cfg.node_valuser || text[ForwardMailQ][0]==0 || yesno(text[ForwardMailQ])) /* Forward to netmail address */ return(netmail(str,subj,mode)); } bprintf(text[Emailing],username(&cfg,usernumber,tmp),usernumber); @@ -100,7 +100,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) nodesync(); sprintf(str,"%sfeedback.*", cfg.exec_dir); - if(usernumber==1 && useron.fbacks && fexist(str)) { + if(usernumber==cfg.node_valuser && useron.fbacks && fexist(str)) { exec_bin("feedback",&main_csi); if(main_csi.logic!=LOGIC_TRUE) return(false); @@ -155,7 +155,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) if(x<cfg.total_prots) /* This should be always */ protocol(cfg.prot[x],XFER_UPLOAD,str2,nulstr,true); } - sprintf(tmp,"%s%s",cfg.temp_dir,title); + safe_snprintf(tmp,sizeof(tmp),"%s%s",cfg.temp_dir,title); if(!fexistcase(str2) && fexistcase(tmp)) mv(tmp,str2,0); l=(long)flength(str2); @@ -288,7 +288,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) sprintf(str,"%u",usernumber); smb_hfield_str(&msg,RECIPIENTEXT,str); - strcpy(str,useron.alias); + SAFECOPY(str,useron.alias); smb_hfield_str(&msg,SENDER,str); sprintf(str,"%u",useron.number); @@ -335,7 +335,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) logon_emails++; user_sent_email(&cfg, &useron, 1, usernumber==1); bprintf(text[Emailed],username(&cfg,usernumber,tmp),usernumber); - sprintf(str,"%s sent e-mail to %s #%d" + safe_snprintf(str,sizeof(str),"%s sent e-mail to %s #%d" ,useron.alias,username(&cfg,usernumber,tmp),usernumber); logline("E+",str); if(mode&WM_FILE && online==ON_REMOTE) @@ -346,13 +346,13 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) getnodedat(i,&node,0); if(node.useron==usernumber && !(node.misc&NODE_POFF) && (node.status==NODE_INUSE || node.status==NODE_QUIET)) { - sprintf(str,text[EmailNodeMsg],cfg.node_num,useron.alias); + safe_snprintf(str,sizeof(str)),text[EmailNodeMsg],cfg.node_num,useron.alias); putnmsg(&cfg,i,str); break; } } if(i>cfg.sys_nodes) { /* User wasn't online, so leave short msg */ - sprintf(str,text[UserSentYouMail],useron.alias); + safe_snprintf(str,sizeof(str),text[UserSentYouMail],useron.alias); putsmsg(&cfg,usernumber,str); } return(true);