X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/d4935c564e1497843ac995957fdb044a2a8891c5..4974d09cc659e2859fcf916ad020628c9695e2f8:/sbr/m_getfld.c diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index a7af3b1a..e500e24e 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -664,7 +664,7 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, max = *bufsz-1; /* Back up and store the current position. */ bp = --s->readpos; - c = s->end - s->readpos < max ? s->end - s->readpos : max; + c = min(s->end - s->readpos, max); if (s->msg_style != MS_DEFAULT && c > 1) { /* * packed maildrop - only take up to the (possible) @@ -775,7 +775,7 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) s = *gstate; /* - * Figure out what the message delimitter string is for this + * Figure out what the message delimiter string is for this * maildrop. (This used to be part of m_Eom but I didn't like * the idea of an "if" statement that could only succeed on the * first call to m_Eom getting executed on each call, i.e., at @@ -793,9 +793,8 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) if ((c = Getc (s)) == EOF) { *cp = '\0'; break; - } else { - *cp = c; } + *cp = c; } if (i == sizeof from-1 && strncmp (text, "From ", sizeof from-1) == 0) { @@ -824,16 +823,22 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) if (s->edelimlen <= 1) adios (NULL, "maildrop delimiter must be at least 2 bytes"); - /* Now malloc'd memory at s->fdelim-1 referenced several times: + /* Now malloc'd memory at s->fdelim-1 is referenced several times, + * containing a copy of the string constant from delimstr. * - * delimstr "\nFrom " "\001\001\001\001\n" - * c 6 5 - * s->fdelim \0"\n\nFrom " \0"\n\001\001\001\001\n" - * s->fdelimlen 6 5 - * s->msg_delim "\nFrom " "\001\001\001\001\n" - * s->edelim "From " "\001\001\001\n" - * s->edelimlen 5 4 - * s->delimend " " "\n" + * "\nFrom \0" 7 "\001\001\001\001\n\0" 6 + * | | + * delimstr c=6 delimstr c=5 + * + * "\0\n\nFrom \0" 9 "\0\n\001\001\001\001\n\0" 8 + * | || | | | | | + * | || s->delimend | | | s->delimend + * | || | | | + * | |s->edelim s->edelimlen=5 | | s->edelim s->edelimlen=4 + * | | | | + * | s->msg_delim | s->msg_delim + * | | + * s->fdelim s->fdelimlen=7 s->fdelim s->fdelimlen=6 */ /* @@ -876,16 +881,15 @@ m_Eom (m_getfld_state_t s) if ((c2 = Getc (s)) == EOF) { *cp = '\0'; break; - } else { - *cp = c2; } + *cp = c2; } if (i != s->edelimlen || strncmp (text, (char *)s->edelim, s->edelimlen)) { if (i == 0 && s->msg_style == MS_MBOX) /* the final newline in the (brain damaged) unix-format - * maildrop is part of the delimitter - delete it. + * maildrop is part of the delimiter - delete it. */ return 1;