From db9819638285490bf4d71daff9523bb8e375d563 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 15 Jun 2012 21:24:37 +0000 Subject: [PATCH] When sending mail to the validation user (who has their account configured to forward to external mail address), don't prompt the user if they wish to forward (always forward). More safe string copying/formatting. --- src/sbbs3/email.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp index a24e3b6f47..6afeb86e45 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); -- GitLab