projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Just fixed a formatting error.
[mmh]
/
sbr
/
m_getfld.c
diff --git
a/sbr/m_getfld.c
b/sbr/m_getfld.c
index
8697f20
..
f62d0e8
100644
(file)
--- a/
sbr/m_getfld.c
+++ b/
sbr/m_getfld.c
@@
-6,7
+6,7
@@
*/
#include <h/mh.h>
*/
#include <h/mh.h>
-#include <zotnet/mts/mts.h>
+#include <mts/generic/mts.h>
/* This module has a long and checkered history. First, it didn't burst
maildrops correctly because it considered two CTRL-A:s in a row to be
/* This module has a long and checkered history. First, it didn't burst
maildrops correctly because it considered two CTRL-A:s in a row to be
@@
-184,6
+184,7
@@
static int (*eom_action)() = NULL;
# define _ptr _p /* Gag */
# define _cnt _r /* Retch */
# define _filbuf __srget /* Puke */
# define _ptr _p /* Gag */
# define _cnt _r /* Retch */
# define _filbuf __srget /* Puke */
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
#endif
#ifdef SCO_5_STDIO
#endif
#ifdef SCO_5_STDIO
@@
-191,6
+192,11
@@
static int (*eom_action)() = NULL;
# define _cnt __cnt
# define _base __base
# define _filbuf(fp) ((fp)->__cnt = 0, __filbuf(fp))
# define _cnt __cnt
# define _base __base
# define _filbuf(fp) ((fp)->__cnt = 0, __filbuf(fp))
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+#endif
+
+#ifndef DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+extern int _filbuf(FILE*);
#endif
#endif
@@
-259,7
+265,7
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
bp = sp = (unsigned char *) iob->_ptr - 1;
j = (cnt = iob->_cnt+1) < i ? cnt : i;
#endif
bp = sp = (unsigned char *) iob->_ptr - 1;
j = (cnt = iob->_cnt+1) < i ? cnt : i;
#endif
- while ((c = *bp++) != ':' && c != '\n' && --j >= 0)
+ while (--j >= 0 && (c = *bp++) != ':' && c != '\n')
*cp++ = c;
j = bp - sp;
*cp++ = c;
j = bp - sp;
@@
-390,7
+396,8
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
*cp++ = j = *(iob->_ptr + c);
c = _filbuf(iob);
#endif
*cp++ = j = *(iob->_ptr + c);
c = _filbuf(iob);
#endif
- if ((j == '\0' || j == '\n') && c != ' ' && c != '\t') {
+ if (c == EOF ||
+ ((j == '\0' || j == '\n') && c != ' ' && c != '\t')) {
if (c != EOF) {
#ifdef LINUX_STDIO
--iob->_IO_read_ptr;
if (c != EOF) {
#ifdef LINUX_STDIO
--iob->_IO_read_ptr;
@@
-538,7
+545,7
@@
m_unknown(FILE *iob)
;
#else /* RPATHS */
cp = unixbuf;
;
#else /* RPATHS */
cp = unixbuf;
- while ((c = getc (iob)) != '\n')
+ while ((c = getc (iob)) != '\n' && cp - unixbuf < BUFSIZ - 1)
*cp++ = c;
*cp = 0;
#endif /* RPATHS */
*cp++ = c;
*cp = 0;
#endif /* RPATHS */
@@
-571,7
+578,7
@@
m_unknown(FILE *iob)
pat_map = (unsigned char **) calloc (256, sizeof(unsigned char *));
for (cp = (char *) fdelim + 1; cp < (char *) delimend; cp++ )
pat_map = (unsigned char **) calloc (256, sizeof(unsigned char *));
for (cp = (char *) fdelim + 1; cp < (char *) delimend; cp++ )
- pat_map[*cp] = (unsigned char *) cp;
+ pat_map[(unsigned char)*cp] = (unsigned char *) cp;
if (msg_style == MS_MMDF) {
/* flush extra msg hdrs */
if (msg_style == MS_MMDF) {
/* flush extra msg hdrs */
@@
-639,7
+646,7
@@
m_Eom (int c, FILE *iob)
break;
#else /* RPATHS */
cp = unixbuf;
break;
#else /* RPATHS */
cp = unixbuf;
- while ((c = getc (iob)) != '\n' && c >= 0)
+ while ((c = getc (iob)) != '\n' && c >= 0 && cp - unixbuf < BUFSIZ - 1)
*cp++ = c;
*cp = 0;
#endif /* RPATHS */
*cp++ = c;
*cp = 0;
#endif /* RPATHS */
@@
-723,7
+730,8
@@
matchc(int patln, char *pat, int strln, char *str)
while (pc != *str++)
if (str > es)
return 0;
while (pc != *str++)
if (str > es)
return 0;
-
+ if (str > es+1)
+ return 0;
sp = str; pp = pat;
while (pp < ep && *sp++ == *pp)
pp++;
sp = str; pp = pat;
while (pp < ep && *sp++ == *pp)
pp++;