Fix out-of-bounds error when incorporating email from stdin
[mmh] / uip / ap.c
index e2d43da..9d35601 100644 (file)
--- a/uip/ap.c
+++ b/uip/ap.c
@@ -138,13 +138,13 @@ process(char *arg, int norm)
 
        (q = &pq)->pq_next = NULL;
        while ((cp = getname(arg))) {
-               p = (struct pqpair *) mh_xcalloc((size_t) 1, sizeof(*p));
+               p = mh_xcalloc(1, sizeof(*p));
                if ((mp = getm(cp, NULL, 0, norm, error)) == NULL) {
-                       p->pq_text = getcpy(cp);
-                       p->pq_error = getcpy(error);
+                       p->pq_text = mh_xstrdup(cp);
+                       p->pq_error = mh_xstrdup(error);
                        status++;
                } else {
-                       p->pq_text = getcpy(mp->m_text);
+                       p->pq_text = mh_xstrdup(mp->m_text);
                        mnfree(mp);
                }
                q = (q->pq_next = p);
@@ -161,11 +161,11 @@ process(char *arg, int norm)
                fmt_scan(fmt, buffer, BUFSIZ, dat);
                fputs(buffer, stdout);
 
-               free(p->pq_text);
+               mh_free0(&(p->pq_text));
                if (p->pq_error)
-                       free(p->pq_error);
+                       mh_free0(&(p->pq_error));
                q = p->pq_next;
-               free((char *) p);
+               mh_free0(&p);
        }
 
        return status;