Imported Upstream version 0.63.0
[hcoop/debian/courier-authlib.git] / rfc822 / rfc822_getaddrs.c
index ed5bc59..a17113f 100644 (file)
@@ -1,10 +1,10 @@
 /*
-** Copyright 1998 - 1999 Double Precision, Inc.
+** Copyright 1998 - 2009 Double Precision, Inc.
 ** See COPYING for distribution information.
 */
 
 /*
-** $Id: rfc822_getaddrs.c,v 1.5 1999/12/06 13:29:49 mrsam Exp $
+** $Id: rfc822_getaddrs.c,v 1.6 2009/11/08 18:14:47 mrsam Exp $
 */
 #include       "rfc822.h"
 #include       <stdlib.h>
@@ -32,15 +32,22 @@ static void saveaddrsep(const char *p, void *ptr)
 
 char *rfc822_getaddrs(const struct rfc822a *rfc)
 {
-size_t addrbuflen=0;
-char   *addrbuf, *ptr;
+       size_t  addrbuflen=0;
+       char    *addrbuf, *ptr;
+
+       if (rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen) < 0)
+               return NULL;
 
-       rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen);
        if (!(addrbuf=malloc(addrbuflen+1)))
                return (0);
 
        ptr=addrbuf;
-       rfc822_print(rfc, &saveaddr, &saveaddrsep, &ptr);
+       if (rfc822_print(rfc, &saveaddr, &saveaddrsep, &ptr) < 0)
+       {
+               free(addrbuf);
+               return NULL;
+       }
+
        addrbuf[addrbuflen]=0;
        return (addrbuf);
 }
@@ -58,15 +65,23 @@ int c;
 
 char *rfc822_getaddrs_wrap(const struct rfc822a *rfc, int w)
 {
-size_t addrbuflen=0;
-char   *addrbuf, *ptr, *start, *lastnl;
+       size_t  addrbuflen=0;
+       char    *addrbuf, *ptr, *start, *lastnl;
+
+       if (rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen) < 0)
+               return NULL;
 
-       rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen);
        if (!(addrbuf=malloc(addrbuflen+1)))
                return (0);
 
        ptr=addrbuf;
-       rfc822_print(rfc, &saveaddr, &saveaddrsep_wrap, &ptr);
+
+       if (rfc822_print(rfc, &saveaddr, &saveaddrsep_wrap, &ptr) < 0)
+       {
+               free(addrbuf);
+               return NULL;
+       }
+
        addrbuf[addrbuflen]=0;
 
        for (lastnl=0, start=ptr=addrbuf; *ptr; )