X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhparse.c;h=488557281a2553ea7b70e714ea3f06f3ea69fa08;hp=7a15b75b1e7b8526c7b789d94bb404589c5b8a1a;hb=4dc39c08f07428ff5f39acd7b0ddee30e0a004f6;hpb=0b4cb45a0dd18d07f6af9d77283ee369bd17b14e diff --git a/uip/mhparse.c b/uip/mhparse.c index 7a15b75..4885572 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -238,7 +238,7 @@ get_content(FILE *in, char *file, int toplevel) HF hp; /* allocate the content structure */ - if (!(ct = (CT) calloc(1, sizeof(*ct)))) + if (!(ct = (CT) mh_xcalloc(1, sizeof(*ct)))) adios(EX_OSERR, NULL, "out of memory"); ct->c_fp = in; @@ -253,7 +253,6 @@ get_content(FILE *in, char *file, int toplevel) switch (state = m_getfld(state, name, buf, sizeof(buf), in)) { case FLD: case FLDPLUS: - case FLDEOF: compnum++; /* get copies of the buffers */ @@ -270,15 +269,10 @@ get_content(FILE *in, char *file, int toplevel) /* Now add the header data to the list */ add_header(ct, np, vp); - /* continue, if this isn't the last header field */ - if (state != FLDEOF) { - ct->c_begin = ftell(in) + 1; - continue; - } - /* else fall... */ + ct->c_begin = ftell(in) + 1; + continue; case BODY: - case BODYEOF: ct->c_begin = ftell(in) - strlen(buf); break; @@ -766,7 +760,9 @@ bad_quote: } if (!*vp) { advise(NULL, "invalid parameter in message %s's %s: field\n%*.*s(parameter %s)", ct->c_file, TYPE_FIELD, i, i, "", *ap); - return NOTOK; + *ci->ci_values[ap - ci->ci_attrs] = '\0'; + *ci->ci_attrs[ap - ci->ci_attrs] = '\0'; + continue; } ap++; @@ -981,7 +977,7 @@ InitText(CT ct) ct->c_subtype = kv->kv_value; /* allocate text character set structure */ - if ((t = (struct text *) calloc(1, sizeof(*t))) == NULL) + if ((t = (struct text *) mh_xcalloc(1, sizeof(*t))) == NULL) adios(EX_OSERR, NULL, "out of memory"); ct->c_ctparams = (void *) t; @@ -1063,7 +1059,7 @@ InitMultiPart(CT ct) } /* allocate primary structure for multipart info */ - if ((m = (struct multipart *) calloc(1, sizeof(*m))) == NULL) + if ((m = (struct multipart *) mh_xcalloc(1, sizeof(*m))) == NULL) adios(EX_OSERR, NULL, "out of memory"); ct->c_ctparams = (void *) m; @@ -1107,7 +1103,7 @@ InitMultiPart(CT ct) if (strcmp(buffer + 2, m->mp_start)!=0) continue; next_part: - if ((part = (struct part *) calloc(1, sizeof(*part))) + if ((part = (struct part *) mh_xcalloc(1, sizeof(*part))) == NULL) adios(EX_OSERR, NULL, "out of memory"); *next = part; @@ -1223,7 +1219,7 @@ reverse_parts(CT ct) i++; /* allocate array of pointers to the parts */ - if (!(base = (struct part **) calloc((size_t) (i + 1), sizeof(*base)))) + if (!(base = (struct part **) mh_xcalloc((size_t) (i + 1), sizeof(*base)))) adios(EX_OSERR, NULL, "out of memory"); bmp = base; @@ -1280,7 +1276,7 @@ InitMessage(CT ct) char **ap, **ep; struct partial *p; - if ((p = (struct partial *) calloc(1, sizeof(*p))) == NULL) + if ((p = (struct partial *) mh_xcalloc(1, sizeof(*p))) == NULL) adios(EX_OSERR, NULL, "out of memory"); ct->c_ctparams = (void *) p; @@ -1393,7 +1389,7 @@ init_encoding(CT ct, OpenCEFunc openfnx) { CE ce; - if ((ce = (CE) calloc(1, sizeof(*ce))) == NULL) + if ((ce = (CE) mh_xcalloc(1, sizeof(*ce))) == NULL) adios(EX_OSERR, NULL, "out of memory"); ct->c_cefile = ce;