ref: 3a4a6d2dd2a3dc812ad31a2c1ee663a7e7ed0bfa
parent: c2a4cab427e4fb48c809a8da4b3cbf5017ca7611
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Mar 22 20:36:57 EDT 2017
upas/smtp: generate 128-bit random message id (was 32 bit), use dBprint(), cleanup unused variables
--- a/sys/src/cmd/upas/smtp/smtp.c
+++ b/sys/src/cmd/upas/smtp/smtp.c
@@ -136,6 +136,7 @@
mailfmtinstall(); /* 2047 encoding */
fmtinstall('D', Dfmt); fmtinstall('[', encodefmt);+ fmtinstall('H', encodefmt);errs = malloc(argc*sizeof(char*));
reply = s_new();
host = 0;
@@ -496,7 +497,6 @@
static char buf[1024];
char *s, *se, *err;
UserPasswd *p;
- int n;
DS ds;
dialstringparse(farend, &ds);
@@ -677,8 +677,6 @@
return 0;
}
-static char hex[] = "0123456789abcdef";
-
/*
* send the damn thing
*/
@@ -685,8 +683,8 @@
char *
data(String *from, Biobuf *b, Mx *mx)
{- char *buf, *cp, errmsg[ERRMAX], id[40];
- int i, n, nbytes, bufsize, eof, r;
+ char *buf, *cp, errmsg[ERRMAX];
+ int n, nbytes, bufsize, eof;
String *fromline;
/*
@@ -751,36 +749,24 @@
fromline = convertheader(from);
uneaten = buf;
- srand(truerand());
if(messageid == 0){- for(i = 0; i < 16; i++){- r = rand() & 0xff;
- id[2*i] = hex[r & 0xf];
- id[2*i + 1] = hex[(r>>4) & 0xf];
- }
- id[2*i] = '\0';
- nbytes += Bprint(&bout, "Message-ID: <%s@%s>\r\n", id, hostdomain);
- if(debug)
- Bprint(&berr, "Message-ID: <%s@%s>\r\n", id, hostdomain);
- }
+ uchar id[16];
- if(originator == 0){- nbytes += Bprint(&bout, "From: %s\r\n", s_to_c(fromline));
- if(debug)
- Bprint(&berr, "From: %s\r\n", s_to_c(fromline));
+ genrandom(id, sizeof(id));
+ nbytes += dBprint("Message-ID: <%.*H@%s>\r\n",+ sizeof(id), id, hostdomain);
}
+
+ if(originator == 0)
+ nbytes += dBprint("From: %s\r\n", s_to_c(fromline));s_free(fromline);
- if(destination == 0 && toline)
- if(*s_to_c(toline) == '@'){ /* route addr */- nbytes += Bprint(&bout, "To: <%s>\r\n", s_to_c(toline));
- if(debug)
- Bprint(&berr, "To: <%s>\r\n", s_to_c(toline));
- } else {- nbytes += Bprint(&bout, "To: %s\r\n", s_to_c(toline));
- if(debug)
- Bprint(&berr, "To: %s\r\n", s_to_c(toline));
- }
+ if(destination == 0 && toline){+ if(*s_to_c(toline) == '@') /* route addr */
+ nbytes += dBprint("To: <%s>\r\n", s_to_c(toline));+ else
+ nbytes += dBprint("To: %s\r\n", s_to_c(toline));+ }
if(date == 0 && udate)
nbytes += printdate(udate);
--
⑨