X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=mts%2Fsmtp%2Fsmtp.c;fp=mts%2Fsmtp%2Fsmtp.c;h=13e8eff9dc352d59ff9a10f57074189f95a40d80;hp=1ab027f31f731da2d0178ea9fcc574786103c186;hb=757fa32156f812a166631942816e46e2138ebae3;hpb=7995fb587acf227b08102c75e15c20418d06ad7d diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c index 1ab027f..13e8eff 100644 --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -1688,15 +1688,17 @@ sm_rrecord (char *buffer, int *len) fgets (buffer, BUFSIZ, sm_rfp); *len = strlen (buffer); - if (ferror (sm_rfp) || feof (sm_rfp)) + /* *len should be >0 except on EOF, but check for safety's sake */ + if (ferror (sm_rfp) || feof (sm_rfp) || (*len == 0)) return sm_rerror (); if (buffer[*len - 1] != '\n') while (getc (sm_rfp) != '\n' && !ferror (sm_rfp) && !feof (sm_rfp)) continue; else - if (buffer[*len - 2] == '\r') + if ((*len > 1) && (buffer[*len - 2] == '\r')) *len -= 1; - buffer[*len - 1] = 0; + *len -= 1; + buffer[*len] = 0; return OK; }