]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
changed to use the new memory wrappers
authormortenp <none@none>
Sat, 19 Jun 2004 03:44:47 +0000 (13:44 +1000)
committermortenp <none@none>
Sat, 19 Jun 2004 03:44:47 +0000 (13:44 +1000)
(my caffeine free week is officially over!)

25 files changed:
src/checkwait_smtpreply.c
src/ctrlvalue.c
src/ctrlvalues.c
src/do_all_the_voodo_here.c
src/find_email_adr.c
src/gethdrline.c
src/getlistaddr.c
src/incindexfile.c
src/listcontrol.c
src/log_error.c
src/mail-functions.c
src/mlmmj-bounce.c
src/mlmmj-maintd.c
src/mlmmj-process.c
src/mlmmj-recieve.c
src/mlmmj-send.c
src/mlmmj-sub.c
src/mlmmj-unsub.c
src/mygetline.c
src/openrandexclrw.c
src/prepstdreply.c
src/send_help.c
src/statctrl.c
src/strgen.c
src/subscriberfuncs.c

index 418b9e4d088d22ee667ea4a7d490105fb22c107a..2a5222bebae2387ab3df370cbfab3efde19f9985 100644 (file)
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
+
 #include "checkwait_smtpreply.h"
 #include "config.h"
+#include "memory.h"
 
 #define USEC_WAIT 1
 #define LOOP_WAIT 10000
@@ -66,27 +68,27 @@ char *checkwait_smtpreply(int sockfd, int replytype)
        switch(replytype) {
        case MLMMJ_CONNECT:
                if(smtpreply[0] != '2' || smtpreply[1] != '2')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_HELO:
                if(smtpreply[0] != '2' || smtpreply[1] != '5')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_FROM:
                if(smtpreply[0] != '2' || smtpreply[1] != '5')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_RCPTTO:
                if(smtpreply[0] != '2' || smtpreply[1] != '5')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_DATA:
                if(smtpreply[0] != '3' || smtpreply[1] != '5')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_DOT:
                if(smtpreply[0] != '2' || smtpreply[1] != '5')
-                       return strdup(smtpreply);
+                       return mystrdup(smtpreply);
                break;
        case MLMMJ_QUIT:
                if(smtpreply[0] != '2' || smtpreply[1] != '2')
index 02ae952ed0664adec73e120862dae019eef83fce..3778a5615db5e37bf20cfebd74d72ac2449119f2 100644 (file)
@@ -31,6 +31,7 @@
 #include "ctrlvalue.h"
 #include "mygetline.h"
 #include "chomp.h"
+#include "memory.h"
 
 char *ctrlvalue(const char *listdir, const char *ctrlstr)
 {
@@ -39,7 +40,7 @@ char *ctrlvalue(const char *listdir, const char *ctrlstr)
        int ctrlfd;
 
        ctrlfd = open(filename, O_RDONLY);
-       free(filename);
+       myfree(filename);
 
        if(ctrlfd < 0)
                return NULL;
index c5f9749c90babaaeadd0a7d38566a42dee349ea0..da09b8be86fdf2e652e9b5a2e469f289580e84c0 100644 (file)
@@ -32,6 +32,7 @@
 #include "mygetline.h"
 #include "chomp.h"
 #include "mlmmj.h"
+#include "memory.h"
 
 struct strlist *ctrlvalues(const char *listdir, const char *ctrlstr)
 {
@@ -41,18 +42,18 @@ struct strlist *ctrlvalues(const char *listdir, const char *ctrlstr)
        int ctrlfd;
 
        ctrlfd = open(filename, O_RDONLY);
-       free(filename);
+       myfree(filename);
 
        if(ctrlfd < 0)
                return NULL;
                
-       ret = malloc(sizeof(struct strlist));
+       ret = mymalloc(sizeof(struct strlist));
        ret->count = 0;
        ret->strs = NULL;
        while((value = mygetline(ctrlfd)) != NULL) {
                chomp(value);
                ret->count++;
-               ret->strs = (char **) realloc(ret->strs, sizeof(char *) *
+               ret->strs = (char **) myrealloc(ret->strs, sizeof(char *) *
                                        (ret->count + 1));
                ret->strs[ret->count-1] = value;
                ret->strs[ret->count] = NULL;
index 73c899766670ab54e1e65ca9a66b3630b6355712..f33dc7036cbb071c6dd44aae888c7fdc5d5abbca 100644 (file)
@@ -34,6 +34,7 @@
 #include "do_all_the_voodo_here.h"
 #include "log_error.h"
 #include "wrappers.h"
+#include "memory.h"
 
 int findit(const char *line, const char **headers)
 {
@@ -62,10 +63,10 @@ void getinfo(const char *line, struct mailhdr *readhdrs)
                        readhdrs[i].valuecount++;
                        valuelen = linelen - tokenlen + 1;
                        readhdrs[i].values =
-                               (char **)realloc(readhdrs[i].values,
+                               (char **)myrealloc(readhdrs[i].values,
                                  readhdrs[i].valuecount * sizeof(char *));
                        readhdrs[i].values[readhdrs[i].valuecount - 1] =
-                                       (char *)malloc(valuelen + 1);
+                                       (char *)mymalloc(valuelen + 1);
                        strncpy(readhdrs[i].values[readhdrs[i].valuecount - 1],
                                                line+tokenlen-1, valuelen);
                        chomp(readhdrs[i].values[readhdrs[i].valuecount - 1]);
@@ -87,13 +88,13 @@ int do_all_the_voodo_here(int infd, int outfd, int hdrfd, int footfd,
                                if(dumpfd2fd(hdrfd, outfd) < 0) {
                                        log_error(LOG_ARGS, "Could not "
                                                "add extra headers");
-                                       free(hdrline);
+                                       myfree(hdrline);
                                        return -1;
                                }
                        }
                        write(outfd, hdrline, strlen(hdrline));
                        fsync(outfd);
-                       free(hdrline);
+                       myfree(hdrline);
                        break;
                }
                /* Do we want info from hdrs? Get it before it's gone */
@@ -109,8 +110,8 @@ int do_all_the_voodo_here(int infd, int outfd, int hdrfd, int footfd,
                                                        " ", hdrline + 9);
                                        writen(outfd, subject,
                                                        strlen(subject));
-                                       free(subject);
-                                       free(hdrline);
+                                       myfree(subject);
+                                       myfree(hdrline);
                                        continue;
                                }
                        }
@@ -124,7 +125,7 @@ int do_all_the_voodo_here(int infd, int outfd, int hdrfd, int footfd,
                        writen(outfd, hdrline, strlen(hdrline));
 
 
-               free(hdrline);
+               myfree(hdrline);
        }
 
        /* Just print the rest of the mail */
index 8e085ba3a0f2f176c201d5bd8195ea77cece4e0c..1c089d24efe318174942c6de71ce73e10c2e0233 100644 (file)
  * IN THE SOFTWARE.
  */
 
-#include "find_email_adr.h"
 #include <string.h>
 #include <strings.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "find_email_adr.h"
+#include "memory.h"
+
 struct email_container *find_email_adr(const char *str,
                struct email_container *retstruct)
 {
        size_t len;
        char *index_atsign;
-       char *tempstr = strdup(str);
+       char *tempstr = mystrdup(str);
        char *c, *first_char = NULL, *last_char = NULL;
        
        index_atsign = strchr(tempstr, '@');
@@ -58,7 +60,7 @@ struct email_container *find_email_adr(const char *str,
                retstruct->emaillist = (char **)realloc(retstruct->emaillist,
                                sizeof(char *) * retstruct->emailcount);
                retstruct->emaillist[retstruct->emailcount-1] =
-                               (char *)malloc(len + 1);
+                               (char *)mymalloc(len + 1);
                snprintf(retstruct->emaillist[retstruct->emailcount-1], len,
                         "%s", first_char);
 #if 0
@@ -68,6 +70,6 @@ struct email_container *find_email_adr(const char *str,
                *index_atsign = 'A'; /* Clear it so we don't find it again */
                index_atsign = strchr(tempstr, '@');
        }
-       free(tempstr);
+       myfree(tempstr);
        return retstruct;
 }
index ac47f8ee3d1b0189d7f5403c9279ed1db3f7d4b7..e77c5f6d1f75b6f07120a2eb97f071bfc1a84d47 100644 (file)
@@ -27,6 +27,7 @@
 #include "mygetline.h"
 #include "gethdrline.h"
 #include "strgen.h"
+#include "memory.h"
 
 char *gethdrline(int fd)
 {
@@ -43,9 +44,9 @@ char *gethdrline(int fd)
                        nextline = mygetline(fd);
                        tmp = retstr;
                        retstr = concatstr(3, retstr, line, nextline);
-                       free(tmp);
-                       free(line);
-                       free(nextline);
+                       myfree(tmp);
+                       myfree(line);
+                       myfree(nextline);
                        tmp = line = nextline = NULL;
                        if(read(fd, &ch, 1) == (size_t)1)
                                lseek(fd, -1, SEEK_CUR);
@@ -54,7 +55,7 @@ char *gethdrline(int fd)
                } else {
                        tmp = retstr;
                        retstr = concatstr(3, retstr, line, nextline);
-                       free(tmp);
+                       myfree(tmp);
 
                        return retstr;
                }
index 4f175b8927a7465c414e5fec7bbef21e030e7065..d143a204b38d3ab84ad62174c10b1d6ba4a22a51 100644 (file)
@@ -32,6 +32,7 @@
 #include "log_error.h"
 #include "mygetline.h"
 #include "strgen.h"
+#include "memory.h"
 
 char *getlistaddr(const char *listdir)
 {
@@ -43,7 +44,7 @@ char *getlistaddr(const char *listdir)
                log_error(LOG_ARGS, "Could not open '%s'", tmpstr);
                exit(EXIT_FAILURE);
        }
-       free(tmpstr);
+       myfree(tmpstr);
 
        tmpstr = mygetline(listnamefd);
 
index 11e16185ce489c554c3001408436302f01a36ffe..43d22890c915d35ebf92933cedf2df98e1088a19 100644 (file)
@@ -36,6 +36,7 @@
 #include "itoa.h"
 #include "log_error.h"
 #include "strgen.h"
+#include "memory.h"
 
 #define INTBUF_SIZE 32
 
@@ -51,7 +52,7 @@ int incindexfile(const char *listdir)
        fd = open(indexfilename, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
 
        if(fd == -1) {
-               free(indexfilename);
+               myfree(indexfilename);
                log_error(LOG_ARGS, "Error opening index file");
                return 0;
        }
@@ -59,7 +60,7 @@ int incindexfile(const char *listdir)
        lock = myexcllock(fd);
        
        if(lock) {
-               free(indexfilename);
+               myfree(indexfilename);
                log_error(LOG_ARGS, "Error locking index file");
                close(fd);
                return 0;
@@ -80,7 +81,7 @@ int incindexfile(const char *listdir)
 
        myunlock(fd);
        close(fd);
-       free(indexfilename);
+       myfree(indexfilename);
 
        return index;
 }
index c52d407bd8b7062113ad25409ba6bec480e40f8c..6b4ccf488b1c1d6d07f6e634bdd13ccdafa4b33d 100644 (file)
@@ -39,6 +39,7 @@
 #include "statctrl.h"
 #include "mygetline.h"
 #include "chomp.h"
+#include "memory.h"
 
 enum ctrl_e {
        CTRL_SUBSCRIBE,
@@ -92,7 +93,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
        MY_ASSERT(atsign);
        len = atsign - recipdelimsign;
 
-       controlstr = malloc(len);
+       controlstr = mymalloc(len);
        MY_ASSERT(controlstr);
        snprintf(controlstr, len, "%s", recipdelimsign + 1);
 
@@ -108,7 +109,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
 
                        if (ctrl_commands[ctrl].accepts_parameter &&
                                        (controlstr[cmdlen] == '-')) {
-                               param = strdup(controlstr + cmdlen + 1);
+                               param = mystrdup(controlstr + cmdlen + 1);
                                MY_ASSERT(param);
                                if (strchr(param, '/')) {
                                        errno = 0;
@@ -117,17 +118,17 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                                                " discarding mail");
                                        exit(EXIT_SUCCESS);
                                }
-                               free(controlstr);
+                               myfree(controlstr);
                                break;
                        } else if (!ctrl_commands[ctrl].accepts_parameter &&
                                        (controlstr[cmdlen] == '\0')) {
                                param = NULL;
-                               free(controlstr);
+                               myfree(controlstr);
                                break;
                        } else {
                                log_error(LOG_ARGS, "Received a malformed"
                                        " list control request");
-                               free(controlstr);
+                               myfree(controlstr);
                                return -1;
                        }
 
@@ -154,7 +155,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                unlink(mailname);
                if (closedlist) exit(EXIT_SUCCESS);
                conffilename = concatstr(3, listdir, "/subconf/", param);
-               free(param);
+               myfree(param);
                if((tmpfd = open(conffilename, O_RDONLY)) > 0) {
                        tmpstr = mygetline(tmpfd);
                        chomp(tmpstr);
@@ -170,7 +171,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                                exit(EXIT_FAILURE);
                        } else {
                                /* Not proper confirm */
-                               free(tmpstr);
+                               myfree(tmpstr);
                                exit(EXIT_SUCCESS);
                        }
                } else /* Not a confirm so silently ignore */
@@ -196,7 +197,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                unlink(mailname);
                if (closedlist) exit(EXIT_SUCCESS);
                conffilename = concatstr(3, listdir, "/unsubconf/", param);
-               free(param);
+               myfree(param);
                if((tmpfd = open(conffilename, O_RDONLY))) {
                        tmpstr = mygetline(tmpfd);
                        close(tmpfd);
@@ -211,7 +212,7 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                                                    mlmmjunsub);
                                exit(EXIT_FAILURE);
                        } else {
-                               free(tmpstr);
+                               myfree(tmpstr);
                                exit(EXIT_SUCCESS);
                        }
                } else /* Not a confirm so silently ignore */
@@ -235,9 +236,9 @@ int listcontrol(struct email_container *fromemails, const char *listdir,
                /* TODO Add accept/reject parameter to moderate */
                unlink(mailname);
                moderatefilename = concatstr(3, listdir, "/moderation/", param);
-               free(param);
+               myfree(param);
                if(stat(moderatefilename, &stbuf) < 0) {
-                       free(moderatefilename);
+                       myfree(moderatefilename);
                        exit(EXIT_SUCCESS); /* just exit, no mail to moderate */
                } else {
                        execlp(mlmmjsend, mlmmjsend,
index cd6d6dce2dbbaca98d2091e8fa1df458534d59cc..f1c55f75145af8727dcefeec2a48197dd34c6bc7 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "log_error.h"
 #include "../config.h"
+#include "memory.h"
 
 #ifdef HAVE_SYSLOG_H
 #include <syslog.h>
@@ -37,13 +38,13 @@ char *log_name = NULL;
 
 void log_set_name(const char* name)
 {
-       if (log_name) free(log_name);
-       log_name = strdup(name);
+       if (log_name) myfree(log_name);
+       log_name = mystrdup(name);
 }
 
 void log_free_name()
 {
-       free(log_name);
+       myfree(log_name);
 }
 
 void log_error(const char *file, int line, const char *errstr,
index f4669cab8a45e31a361881068a22519c73e332a2..853a05814a1b1dd24795ae22ebd82c55cacb7abd 100644 (file)
@@ -35,6 +35,7 @@
 #include "mail-functions.h"
 #include "wrappers.h"
 #include "log_error.h"
+#include "memory.h"
 
 /* "HELO \r\n " has length 7 */
 #define EXTRA_HELO_LEN 8
@@ -44,7 +45,7 @@ int write_helo(int sockfd, const char *hostname)
        char *helo;
        size_t bytes_written;
        
-       if((helo = malloc(len)) == 0)
+       if((helo = mymalloc(len)) == 0)
                return errno;
        snprintf(helo, len, "HELO %s\r\n", hostname);
        len = strlen(helo);
@@ -54,10 +55,10 @@ int write_helo(int sockfd, const char *hostname)
        bytes_written = writen(sockfd, helo, len);
        if(bytes_written < 0) {
                log_error(LOG_ARGS, "Could not write HELO");
-               free(helo);
+               myfree(helo);
                return errno;
        }
-       free(helo);
+       myfree(helo);
        return 0;
 }
 /* "MAIL FROM: <>\r\n" has length 15 */
@@ -68,7 +69,7 @@ int write_mail_from(int sockfd, const char *from_addr)
        char *mail_from;
        size_t bytes_written;
 
-       if((mail_from = malloc(len)) == NULL)
+       if((mail_from = mymalloc(len)) == NULL)
                return errno;
        snprintf(mail_from, len, "MAIL FROM: <%s>\r\n", from_addr);
        len = strlen(mail_from);
@@ -79,10 +80,10 @@ int write_mail_from(int sockfd, const char *from_addr)
        bytes_written = writen(sockfd, mail_from, len);
        if(bytes_written < 0) {
                log_error(LOG_ARGS, "Could not write FROM");
-               free(mail_from);
+               myfree(mail_from);
                return errno;
        }
-       free(mail_from);
+       myfree(mail_from);
        return 0;
 }
 
@@ -95,7 +96,7 @@ int write_rcpt_to(int sockfd, const char *rcpt_addr)
        char *rcpt_to;
        size_t bytes_written;
        
-       if((rcpt_to = malloc(len)) == 0)
+       if((rcpt_to = mymalloc(len)) == 0)
                return errno;
 
        snprintf(rcpt_to, len, "RCPT TO: <%s>\r\n", rcpt_addr);
@@ -107,10 +108,10 @@ int write_rcpt_to(int sockfd, const char *rcpt_addr)
        bytes_written = writen(sockfd, rcpt_to, len);
        if(bytes_written < 0) {
                log_error(LOG_ARGS, "Could not write TO");
-               free(rcpt_to);
+               myfree(rcpt_to);
                return errno;
        }
-       free(rcpt_to);
+       myfree(rcpt_to);
        return 0;
 }
 
@@ -165,7 +166,7 @@ int write_custom_line(int sockfd, const char *line)
        size_t bytes_written;
        char *customline;
        
-       if((customline = malloc(len)) == 0)
+       if((customline = mymalloc(len)) == 0)
                return errno;
        
        snprintf(customline, len, "%s\r\n", line);
@@ -177,10 +178,10 @@ int write_custom_line(int sockfd, const char *line)
        bytes_written = writen(sockfd, customline, len);
        if(bytes_written < 0) {
                log_error(LOG_ARGS, "Could not write customline");
-               free(customline);
+               myfree(customline);
                return errno;
        }
-       free(customline);
+       myfree(customline);
        return 0;
 }
 
@@ -193,7 +194,7 @@ int write_replyto(int sockfd, const char *replyaddr)
        char *replyto;
        size_t bytes_written;
        
-       if((replyto = malloc(len)) == 0)
+       if((replyto = mymalloc(len)) == 0)
                return errno;
 
        snprintf(replyto, len, "Reply-To: %s\r\n", replyaddr);
@@ -205,10 +206,10 @@ int write_replyto(int sockfd, const char *replyaddr)
        bytes_written = writen(sockfd, replyto, len);
        if(bytes_written < 0) {
                log_error(LOG_ARGS, "Could not write Reply-To header");
-               free(replyto);
+               myfree(replyto);
                return errno;
        }
-       free(replyto);
+       myfree(replyto);
        return 0;
 }
 
index be12706ee126551f9e9d5acaf40e813ec138c048..dd87679a96acd769794a7a596bcf41ab95c50d77 100644 (file)
@@ -42,6 +42,7 @@
 #include "mygetline.h"
 #include "chomp.h"
 #include "prepstdreply.h"
+#include "memory.h"
 
 char *fetchindexes(const char *bouncefile)
 {
@@ -72,7 +73,7 @@ char *fetchindexes(const char *bouncefile)
        for(next = cur = start; next < start + st.st_size; next++) {
                if(*next == '\n') {
                        len = next - cur;
-                       line = malloc(len + 1);
+                       line = mymalloc(len + 1);
                        strncpy(line, cur, len);
                        line[len] = '\0';
                        cur = next + 1;
@@ -83,8 +84,8 @@ char *fetchindexes(const char *bouncefile)
                *colon = '\0';
                s = indexstr;
                indexstr = concatstr(4, s, "        ", line, "\n");
-               free(s);
-               free(line);
+               myfree(s);
+               myfree(line);
        }
                
        munmap(start, st.st_size);
@@ -101,8 +102,7 @@ void do_probe(const char *listdir, const char *mlmmjsend, const char *addr)
        int fd;
        time_t t;
 
-       myaddr = strdup(addr);
-       MY_ASSERT(myaddr);
+       myaddr = mystrdup(addr);
 
        listaddr = getlistaddr(listdir);
        chomp(listaddr);
@@ -114,8 +114,8 @@ void do_probe(const char *listdir, const char *mlmmjsend, const char *addr)
 
        a = strchr(myaddr, '=');
        if (!a) {
-               free(myaddr);
-               free(from);
+               myfree(myaddr);
+               myfree(from);
                log_error(LOG_ARGS, "do_probe(): malformed address");
                exit(EXIT_FAILURE);
        }
@@ -137,17 +137,17 @@ void do_probe(const char *listdir, const char *mlmmjsend, const char *addr)
        queuefilename = prepstdreply(listdir, "bounce-probe", fromstr,
                                        myaddr, NULL, subjectstr, 2, maildata);
        MY_ASSERT(queuefilename);
-       free(fromstr);
-       free(subjectstr);
-       free(listaddr);
-       free(listfqdn);
-       free(listname);
-       free(indexstr);
+       myfree(fromstr);
+       myfree(subjectstr);
+       myfree(listaddr);
+       myfree(listfqdn);
+       myfree(listname);
+       myfree(indexstr);
 
        probefile = concatstr(4, listdir, "/bounce/", addr, "-probe");
        MY_ASSERT(probefile);
        t = time(NULL);
-       a = malloc(32);
+       a = mymalloc(32);
        snprintf(a, 31, "%ld", (long int)t);
        a[31] = '\0';
        unlink(probefile);
@@ -158,7 +158,7 @@ void do_probe(const char *listdir, const char *mlmmjsend, const char *addr)
                if(writen(fd, a, strlen(a)) < 0)
                        log_error(LOG_ARGS, "Could not write time in probe");
 
-       free(probefile);
+       myfree(probefile);
 
        execlp(mlmmjsend, mlmmjsend,
                                "-l", "1",
@@ -201,7 +201,7 @@ int main(int argc, char **argv)
 
        bindir = mydirname(argv[0]);
        mlmmjsend = concatstr(2, bindir, "/mlmmj-send");
-       free(bindir);
+       myfree(bindir);
 
        while ((opt = getopt(argc, argv, "hVL:a:n:m:p")) != -1) {
                switch(opt) {
@@ -259,14 +259,14 @@ int main(int argc, char **argv)
                a = concatstr(5, listdir, "/subconf/", address + 8, "-",
                                number);
                unlink(a);
-               free(a);
+               myfree(a);
                exit(EXIT_SUCCESS);
        }
        if(strncmp(address, "confunsub-", 10) == 0) {
                a = concatstr(5, listdir, "/unsubconf/", address + 10, "-",
                                number);
                unlink(a);
-               free(a);
+               myfree(a);
                exit(EXIT_SUCCESS);
        }
        /* Below checks for bounce probes bouncing. If they do, simply remove
@@ -276,7 +276,7 @@ int main(int argc, char **argv)
                a = concatstr(4, listdir, "/bounce/", address, "-probe");
                unlink(a);
                unlink(mailname);
-               free(a);
+               myfree(a);
                exit(EXIT_SUCCESS);
        }
        
@@ -290,7 +290,7 @@ int main(int argc, char **argv)
 
        /* make sure it's a subscribed address */
        if(is_subbed(listdir, address)) {
-               free(bfilename);
+               myfree(bfilename);
                exit(EXIT_SUCCESS); /* Not subbed, so exit silently */
        }
 
@@ -305,7 +305,7 @@ int main(int argc, char **argv)
        if ((fd = open(bfilename, O_WRONLY|O_APPEND|O_CREAT,
                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", bfilename);
-               free(bfilename);
+               myfree(bfilename);
                exit(EXIT_FAILURE);
        }
 
@@ -318,7 +318,7 @@ int main(int argc, char **argv)
        /* int + ":" + int + " # Wed Jun 30 21:49:08 1993\n" + NUL */
        len = 20 + 1 + 20 + 28 + 1;
 
-       buf = malloc(len);
+       buf = mymalloc(len);
        if (!buf) exit(EXIT_FAILURE);
 
        t = time(NULL);
@@ -330,7 +330,7 @@ int main(int argc, char **argv)
        if(mailname)
                unlink(mailname);
                
-       free(bfilename);
+       myfree(bfilename);
 
        return EXIT_SUCCESS;
 }
index 6facef19cfaa5dbbd632612f19f5d160bbf99dc7..ba9c7778d9790455373604a2569a3165be54615f 100644 (file)
@@ -39,6 +39,7 @@
 #include "log_error.h"
 #include "mygetline.h"
 #include "wrappers.h"
+#include "memory.h"
 
 static int maintdlogfd = -1;
 
@@ -91,7 +92,7 @@ int clean_moderation(const char *listdir)
        char *moddirname = concatstr(2, listdir, "/moderation");
        int ret = delolder(moddirname, MODREQLIFE);     
                
-       free(moddirname);
+       myfree(moddirname);
 
        return ret;
 }
@@ -101,7 +102,7 @@ int clean_discarded(const char *listdir)
        char *discardeddirname = concatstr(2, listdir, "/queue/discarded");
        int ret = delolder(discardeddirname, DISCARDEDLIFE);
 
-       free(discardeddirname);
+       myfree(discardeddirname);
 
        return ret;
 }
@@ -135,16 +136,16 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
 
        if(chdir(dirname) < 0) {
                log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
                
        if((queuedir = opendir(dirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
-       free(dirname);
+       myfree(dirname);
 
        while((dp = readdir(queuedir)) != NULL) {
                if(stat(dp->d_name, &st) < 0) {
@@ -156,13 +157,13 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
                        continue;
 
                if(strchr(dp->d_name, '.')) {
-                       mailname = strdup(dp->d_name);
+                       mailname = mystrdup(dp->d_name);
                        ch = strchr(mailname, '.');
                        *ch = '\0';
                        if(stat(mailname, &st) < 0)
                                if(errno == ENOENT)
                                        unlink(dp->d_name);
-                       free(mailname);
+                       myfree(mailname);
                        continue;
                }
 
@@ -177,7 +178,7 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
                                discarded = discardmail(mailname,
                                                        discardedname,
                                                        3600);
-                               free(discardedname);
+                               myfree(discardedname);
                        } else {
                                log_error(LOG_ARGS, "Could not stat(%s)",
                                                dp->d_name);
@@ -194,7 +195,7 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
                                discarded = discardmail(mailname,
                                                        discardedname,
                                                        3600);
-                               free(discardedname);
+                               myfree(discardedname);
                        } else {
                                log_error(LOG_ARGS, "Could not stat(%s)",
                                                dp->d_name);
@@ -212,10 +213,10 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
                                unlink(toname);
                                unlink(reptoname);
                        }
-                       free(mailname);
-                       free(fromname);
-                       free(toname);
-                       free(reptoname);
+                       myfree(mailname);
+                       myfree(fromname);
+                       myfree(toname);
+                       myfree(reptoname);
                        if(fromfd >= 0)
                                close(fromfd);
                        continue;
@@ -225,40 +226,40 @@ int resend_queue(const char *listdir, const char *mlmmjsend)
                chomp(from);
                close(fromfd);
                unlink(fromname);
-               free(fromname);
+               myfree(fromname);
                to = mygetline(tofd);
                chomp(to);
                close(tofd);
                unlink(toname);
-               free(toname);
+               myfree(toname);
                fd = open(reptoname, O_RDONLY);
                if(fd < 0) {
-                       free(reptoname);
+                       myfree(reptoname);
                        repto = NULL;
                } else {
                        repto = mygetline(fd);
                        chomp(repto);
                        close(fd);
                        unlink(reptoname);
-                       free(reptoname);
+                       myfree(reptoname);
                }
 
                childpid = fork();
 
                if(childpid < 0) {
-                       free(mailname);
-                       free(from);
-                       free(to);
-                       free(repto);
+                       myfree(mailname);
+                       myfree(from);
+                       myfree(to);
+                       myfree(repto);
                        log_error(LOG_ARGS, "Could not fork");
                        continue;
                }
 
                if(childpid > 0) {
-                       free(mailname);
-                       free(from);
-                       free(to);
-                       free(repto);
+                       myfree(mailname);
+                       myfree(from);
+                       myfree(to);
+                       myfree(repto);
                        do /* Parent waits for the child */
                              pid = waitpid(childpid, &status, 0);
                        while(pid == -1 && errno == EINTR);
@@ -301,17 +302,17 @@ int resend_requeue(const char *listdir, const char *mlmmjsend)
 
        if(chdir(dirname) < 0) {
                log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
                
        if((queuedir = opendir(dirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
 
-       free(dirname);
+       myfree(dirname);
        
        while((dp = readdir(queuedir)) != NULL) {
                if((strcmp(dp->d_name, "..") == 0) ||
@@ -339,14 +340,14 @@ int resend_requeue(const char *listdir, const char *mlmmjsend)
                         * yet because it's still getting sent, so just
                         * continue
                         */
-                       free(archivefilename);
+                       myfree(archivefilename);
                        continue;
                }
                subfilename = concatstr(3, dirname, dp->d_name, "/subscribers");
                if(stat(subfilename, &st) < 0) {
                        log_error(LOG_ARGS, "Could not stat(%s)", subfilename);
-                       free(archivefilename);
-                       free(subfilename);
+                       myfree(archivefilename);
+                       myfree(subfilename);
                        continue;
                }
 
@@ -355,25 +356,25 @@ int resend_requeue(const char *listdir, const char *mlmmjsend)
                if(rename(subfilename, subnewname) < 0) {
                        log_error(LOG_ARGS, "Could not rename(%s, %s)",
                                                subfilename, subnewname);
-                       free(archivefilename);
-                       free(subfilename);
-                       free(subnewname);
+                       myfree(archivefilename);
+                       myfree(subfilename);
+                       myfree(subnewname);
                        continue;
                }
-               free(subfilename);
+               myfree(subfilename);
                
                childpid = fork();
 
                if(childpid < 0) {
-                       free(archivefilename);
-                       free(subnewname);
+                       myfree(archivefilename);
+                       myfree(subnewname);
                        log_error(LOG_ARGS, "Could not fork");
                        continue;
                }
 
                if(childpid > 0) {
-                       free(archivefilename);
-                       free(subnewname);
+                       myfree(archivefilename);
+                       myfree(subnewname);
                        do /* Parent waits for the child */
                              pid = waitpid(childpid, &status, 0);
                        while(pid == -1 && errno == EINTR);
@@ -406,17 +407,17 @@ int clean_nolongerbouncing(const char *listdir)
        
        if(chdir(dirname) < 0) {
                log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
                
        if((bouncedir = opendir(dirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
 
-       free(dirname);
+       myfree(dirname);
 
        while((dp = readdir(bouncedir)) != NULL) {
                if((strcmp(dp->d_name, "..") == 0) ||
@@ -428,7 +429,7 @@ int clean_nolongerbouncing(const char *listdir)
                        continue;
                }
 
-               filename = strdup(dp->d_name);
+               filename = mystrdup(dp->d_name);
 
                if((s = strstr(filename, "-probe"))) {
                        probefd = open(filename, O_RDONLY);
@@ -440,7 +441,7 @@ int clean_nolongerbouncing(const char *listdir)
                        close(probefd);
                        chomp(probetimestr);
                        probetime = (time_t)strtol(probetimestr, NULL, 10);
-                       free(probetimestr);
+                       myfree(probetimestr);
                        t = time(NULL);
                        if(t - probetime > WAITPROBE) {
                                unlink(filename);
@@ -448,7 +449,7 @@ int clean_nolongerbouncing(const char *listdir)
                                unlink(filename);
                        }
                }
-               free(filename);
+               myfree(filename);
        }
 
        closedir(bouncedir);
@@ -468,17 +469,17 @@ int probe_bouncers(const char *listdir, const char *mlmmjbounce)
        
        if(chdir(dirname) < 0) {
                log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
                
        if((bouncedir = opendir(dirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
 
-       free(dirname);
+       myfree(dirname);
 
        while((dp = readdir(bouncedir)) != NULL) {
                if((strcmp(dp->d_name, "..") == 0) ||
@@ -497,10 +498,10 @@ int probe_bouncers(const char *listdir, const char *mlmmjbounce)
                
                /* Skip files which already have a probe out */
                if(stat(probefile, &st) == 0) {
-                       free(probefile);
+                       myfree(probefile);
                        continue;
                }
-               free(probefile);
+               myfree(probefile);
 
                childpid = fork();
                
@@ -514,7 +515,7 @@ int probe_bouncers(const char *listdir, const char *mlmmjbounce)
                                pid = waitpid(childpid, &status, 0);
                        while(pid == -1 && errno == EINTR);
                } else {
-                       probefile = strdup(dp->d_name);
+                       probefile = mystrdup(dp->d_name);
                        execlp(mlmmjbounce, mlmmjbounce,
                                        "-L", listdir,
                                        "-a", probefile,
@@ -543,17 +544,17 @@ int unsub_bouncers(const char *listdir, const char *mlmmjunsub)
        
        if(chdir(dirname) < 0) {
                log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
                
        if((bouncedir = opendir(dirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", dirname);
-               free(dirname);
+               myfree(dirname);
                return 1;
        }
 
-       free(dirname);
+       myfree(dirname);
 
        while((dp = readdir(bouncedir)) != NULL) {
                if((strcmp(dp->d_name, "..") == 0) ||
@@ -572,10 +573,10 @@ int unsub_bouncers(const char *listdir, const char *mlmmjunsub)
                
                /* Skip files which already have a probe out */
                if(stat(probefile, &st) == 0) {
-                       free(probefile);
+                       myfree(probefile);
                        continue;
                }
-               free(probefile);
+               myfree(probefile);
 
                /* Get the first line of the bounce file to check if it's
                 * been bouncing for long enough
@@ -593,30 +594,30 @@ int unsub_bouncers(const char *listdir, const char *mlmmjunsub)
                /* End the string at the comment */
                a = strchr(firstbounce, '#');
                if(a == NULL) {
-                       free(firstbounce);
+                       myfree(firstbounce);
                        continue;
                }
                *a = '\0';
-               bouncedata = strdup(a+1); /* Save for the log */
+               bouncedata = mystrdup(a+1); /* Save for the log */
                chomp(bouncedata);
                a = strchr(firstbounce, ':');
                if(a == NULL) {
-                       free(firstbounce);
+                       myfree(firstbounce);
                        continue;
                }
 
                a++; /* Increase to first digit */
                bouncetime = (time_t)strtol(a, NULL, 10);
-               free(firstbounce);
+               myfree(firstbounce);
                t = time(NULL);
                if(t - bouncetime < BOUNCELIFE + WAITPROBE)
                        continue; /* ok, don't unsub this one */
                
                /* Ok, go ahead and unsubscribe the address */
-               address = strdup(dp->d_name);
+               address = mystrdup(dp->d_name);
                a = strchr(address, '=');
                if(a == NULL) { /* skip malformed */
-                       free(address);
+                       myfree(address);
                        continue;
                }
                *a = '@';
@@ -631,8 +632,8 @@ int unsub_bouncers(const char *listdir, const char *mlmmjunsub)
                if(childpid > 0) {
                        WRITEMAINTLOG6(5, "UNSUB: ", address, ". Bounced since",
                                        bouncedata, ".\n");
-                       free(address);
-                       free(bouncedata);
+                       myfree(address);
+                       myfree(bouncedata);
                        do /* Parent waits for the child */
                                pid = waitpid(childpid, &status, 0);
                        while(pid == -1 && errno == EINTR);
@@ -709,7 +710,7 @@ int main(int argc, char **argv)
        mlmmjsend = concatstr(2, bindir, "/mlmmj-send");
        mlmmjbounce = concatstr(2, bindir, "/mlmmj-bounce");
        mlmmjunsub = concatstr(2, bindir, "/mlmmj-unsub");
-       free(bindir);
+       myfree(bindir);
 
        if(daemonize && daemon(1,0) < 0) {
                log_error(LOG_ARGS, "Could not daemonize. Only one "
@@ -720,11 +721,11 @@ int main(int argc, char **argv)
        for(;;) {
                random = random_str();
                logname = concatstr(3, listdir, "maintdlog-", random);
-               free(random);
+               myfree(random);
                maintdlogfd = open(logname, O_WRONLY|O_EXCL|O_CREAT,
                                        S_IRUSR|S_IWUSR);
                if(maintdlogfd < 0) {
-                       free(logname);
+                       myfree(logname);
                        log_error(LOG_ARGS, "Could not open maintenance logfile");
                        exit(EXIT_FAILURE);
                }
@@ -760,8 +761,8 @@ int main(int argc, char **argv)
                        log_error(LOG_ARGS, "Could not rename(%s,%s)",
                                                logname, logstr);
 
-               free(logname);
-               free(logstr);
+               myfree(logname);
+               myfree(logstr);
 
                if(daemonize == 0)
                        break;
@@ -769,9 +770,9 @@ int main(int argc, char **argv)
                        sleep(MAINTD_SLEEP);
        }
 
-       free(mlmmjbounce);
-       free(mlmmjsend);
-       free(mlmmjunsub);
+       myfree(mlmmjbounce);
+       myfree(mlmmjsend);
+       myfree(mlmmjunsub);
 
        log_free_name();
                
index d4ea8d92bd27e20d0d51ecef6b541e06976f0a21..526d30014ba2b259a2373db5c9fe384316628d9e 100644 (file)
@@ -47,6 +47,7 @@
 #include "getlistaddr.h"
 #include "prepstdreply.h"
 #include "subscriberfuncs.h"
+#include "memory.h"
 
 void newmoderated(const char *listdir, const char *mailfilename,
                  const char *mlmmjsend)
@@ -66,25 +67,25 @@ void newmoderated(const char *listdir, const char *mailfilename,
        moderatorfilename = concatstr(2, listdir, "/text/moderation");
        if((moderatorfd = open(moderatorfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open text/moderation");
-               free(moderatorfilename);
+               myfree(moderatorfilename);
                exit(EXIT_FAILURE);
        }
-       free(moderatorfilename);
+       myfree(moderatorfilename);
 
        moderatorsfilename = concatstr(2, listdir, "/control/moderators");
        if((moderatorsfd = open(moderatorsfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", moderatorsfilename);
-               free(queuefilename);
-               free(moderatorsfilename);
+               myfree(queuefilename);
+               myfree(moderatorsfilename);
                close(queuefd);
                exit(EXIT_FAILURE);
        }
-       free(moderatorsfilename);
+       myfree(moderatorsfilename);
 
        if((mailfd = open(mailfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", mailfilename);
-               free(queuefilename);
-               free(moderatorsfilename);
+               myfree(queuefilename);
+               myfree(moderatorsfilename);
                close(queuefd);
                exit(EXIT_FAILURE);
        }
@@ -94,11 +95,11 @@ void newmoderated(const char *listdir, const char *mailfilename,
        if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", queuefilename);
-               free(queuefilename);
-               free(randomstr);
+               myfree(queuefilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
-       free(randomstr);
+       myfree(randomstr);
 
        from = concatstr(3, listname, "+owner@", fqdn);
        s1 = concatstr(15, "From: ", from, "\nTo: ", listname, "-moderators@",
@@ -109,7 +110,7 @@ void newmoderated(const char *listdir, const char *mailfilename,
                log_error(LOG_ARGS, "Could not write to %s", queuefilename);
                exit(EXIT_FAILURE);
        }
-       free(s1);
+       myfree(s1);
        s1 = concatstr(5, listname, "+moderate-", mailbasename, "@", fqdn);
        
        while((buf = mygetline(moderatorfd))) {
@@ -125,15 +126,15 @@ void newmoderated(const char *listdir, const char *mailfilename,
                                                queuefilename);
                                exit(EXIT_FAILURE);
                        }
-                       free(s1);
+                       myfree(s1);
                } else if(strncmp(buf, "*MODERATORS*", 12) == 0) {
-                       free(buf);
+                       myfree(buf);
                        while((buf = mygetline(moderatorsfd))) {
                                if(writen(queuefd, buf, strlen(buf)) < 0)
                                        log_error(LOG_ARGS,
                                                "Could not write moderators");
                                        
-                               free(buf);
+                               myfree(buf);
                                buf = NULL;
                        }
                } else
@@ -142,15 +143,15 @@ void newmoderated(const char *listdir, const char *mailfilename,
                                        "Could not write moderatemail");
                                exit(EXIT_FAILURE);
                        }
-               free(buf);
+               myfree(buf);
        }
        close(moderatorfd);
        close(moderatorsfd);
        while((buf = mygetline(mailfd)) && count < 100) {
                s1 = concatstr(2, " ", buf);
-               free(buf);
+               myfree(buf);
                writen(queuefd, s1, strlen(s1));
-               free(s1);
+               myfree(s1);
                count++;
        }
        close(queuefd);
@@ -214,7 +215,7 @@ int main(int argc, char **argv)
        mlmmjsub = concatstr(2, bindir, "/mlmmj-sub");
        mlmmjunsub = concatstr(2, bindir, "/mlmmj-unsub");
        mlmmjbounce = concatstr(2, bindir, "/mlmmj-bounce");
-       free(bindir);
+       myfree(bindir);
        
        while ((opt = getopt(argc, argv, "hVPm:L:")) != -1) {
                switch(opt) {
@@ -245,7 +246,7 @@ int main(int argc, char **argv)
        donemailfd = open(donemailname, O_RDWR|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR);
        while(donemailfd < 0 && errno == EEXIST) {
-               free(donemailname);
+               myfree(donemailname);
                randomstr = random_str();
                donemailname = concatstr(3, listdir, "/queue/", randomstr);
                fd = open(donemailname, O_RDWR|O_CREAT|O_EXCL,
@@ -253,7 +254,7 @@ int main(int argc, char **argv)
        }
        
        if(donemailfd < 0) {
-               free(donemailname);
+               myfree(donemailname);
                log_error(LOG_ARGS, "could not create mail file in queue"
                                    "directory");
                exit(EXIT_FAILURE);
@@ -262,30 +263,30 @@ int main(int argc, char **argv)
        log_error(LOG_ARGS, "donemailname = [%s]\n", donemailname);
 #endif
        if((rawmailfd = open(mailfile, O_RDONLY)) < 0) {
-               free(donemailname);
+               myfree(donemailname);
                log_error(LOG_ARGS, "could not open() input mail file");
                exit(EXIT_FAILURE);
        }
 
        headerfilename = concatstr(2, listdir, "/control/customheaders");
        hdrfd = open(headerfilename, O_RDONLY);
-       free(headerfilename);
+       myfree(headerfilename);
        
        footerfilename = concatstr(2, listdir, "/control/footer");
        footfd = open(footerfilename, O_RDONLY);
-       free(footerfilename);
+       myfree(footerfilename);
 
        delheaders = ctrlvalues(listdir, "delheaders");
        if(delheaders == NULL) {
-               delheaders = malloc(sizeof(struct strlist));
+               delheaders = mymalloc(sizeof(struct strlist));
                delheaders->count = 0;
                delheaders->strs = NULL;
        }
 
-       delheaders->strs = realloc(delheaders->strs,
+       delheaders->strs = myrealloc(delheaders->strs,
                        (delheaders->count+3) * sizeof(char *));
-       delheaders->strs[delheaders->count++] = strdup("From ");
-       delheaders->strs[delheaders->count++] = strdup("Return-Path:");
+       delheaders->strs[delheaders->count++] = mystrdup("From ");
+       delheaders->strs[delheaders->count++] = mystrdup("Return-Path:");
        delheaders->strs[delheaders->count++] = NULL;
        
        subjectprefix = ctrlvalue(listdir, "prefix");   
@@ -298,9 +299,9 @@ int main(int argc, char **argv)
        }
 
        for(i = 0; i < delheaders->count; i++)
-               free(delheaders->strs[i]);
-       free(delheaders->strs);
-       free(delheaders);
+               myfree(delheaders->strs[i]);
+       myfree(delheaders->strs);
+       myfree(delheaders);
 
        close(rawmailfd);
        close(donemailfd);
@@ -319,8 +320,8 @@ int main(int argc, char **argv)
                                                "/queue/discarded/",
                                                randomstr);
                        rename(donemailname, discardname);
-                       free(donemailname);
-                       free(discardname);
+                       myfree(donemailname);
+                       myfree(discardname);
                        /* TODO: free emailstructs */
                        exit(EXIT_SUCCESS);
                }
@@ -395,11 +396,11 @@ int main(int argc, char **argv)
                queuefilename = prepstdreply(listdir, "notintocc", fromstr,
                                             fromemails.emaillist[0], NULL,
                                             subject, 1, maildata);
-               free(listaddr);
-               free(listname);
-               free(listfqdn);
-               free(fromstr);
-               free(subject);
+               myfree(listaddr);
+               myfree(listname);
+               myfree(listfqdn);
+               myfree(fromstr);
+               myfree(subject);
                execlp(mlmmjsend, mlmmjsend,
                                "-l", "1",
                                "-T", fromemails.emaillist[0],
@@ -427,11 +428,11 @@ int main(int argc, char **argv)
                        queuefilename = prepstdreply(listdir, "subonlypost",
                                        fromstr, fromemails.emaillist[0], NULL,
                                             subject, 2, maildata);
-                       free(listaddr);
-                       free(listname);
-                       free(listfqdn);
-                       free(fromstr);
-                       free(subject);
+                       myfree(listaddr);
+                       myfree(listname);
+                       myfree(listfqdn);
+                       myfree(fromstr);
+                       myfree(subject);
                        execlp(mlmmjsend, mlmmjsend,
                                        "-l", "1",
                                        "-T", fromemails.emaillist[0],
@@ -448,23 +449,23 @@ int main(int argc, char **argv)
        if(moderated) {
                mqueuename = concatstr(3, listdir, "/moderation/",
                                       randomstr);
-               free(randomstr);
+               myfree(randomstr);
                if(rename(donemailname, mqueuename) < 0) {
                        log_error(LOG_ARGS, "could not rename(%s,%s)",
                                            donemailname, mqueuename);
-                       free(donemailname);
-                       free(mqueuename);
+                       myfree(donemailname);
+                       myfree(mqueuename);
                        exit(EXIT_FAILURE);
                }
-               free(donemailname);
+               myfree(donemailname);
                newmoderated(listdir, mqueuename, mlmmjsend);
                return EXIT_SUCCESS;
        }
 
 
        if(noprocess) {
-               free(donemailname);
-               /* XXX: toemails and ccemails etc. have to be free() */
+               myfree(donemailname);
+               /* XXX: toemails and ccemails etc. have to be myfree() */
                exit(EXIT_SUCCESS);
        }
        
index 888d57a38e91463a62dce0ff0022d8d843c78798..9a9f695ccd5f3c6c46441f2fb05c015d3a586555 100644 (file)
@@ -36,6 +36,7 @@
 #include "mygetline.h"
 #include "strgen.h"
 #include "log_error.h"
+#include "memory.h"
 
 extern char *optarg;
 
@@ -64,7 +65,7 @@ int main(int argc, char **argv)
 
        bindir = mydirname(argv[0]);
        mlmmjprocess = concatstr(2, bindir, "/mlmmj-process");
-       free(bindir);
+       myfree(bindir);
        
        while ((opt = getopt(argc, argv, "hPVL:F")) != -1) {
                switch(opt) {
@@ -92,20 +93,20 @@ int main(int argc, char **argv)
        }
        
        infilename = concatstr(3, listdir, "/incoming/", randomstr);
-       free(randomstr);
+       myfree(randomstr);
        fd = open(infilename, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
        while(fd < 0 && errno == EEXIST) {
-               free(infilename);
+               myfree(infilename);
                randomstr = random_str();
                infilename = concatstr(3, listdir, "/incoming/", randomstr);
-               free(randomstr);
+               myfree(randomstr);
                fd = open(infilename, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
        }
 
        if(fd < 0) {
                log_error(LOG_ARGS, "could not create mail file in "
                                    "%s/incoming directory", listdir);
-               free(infilename);
+               myfree(infilename);
                exit(EXIT_FAILURE);
        }
        
@@ -122,7 +123,7 @@ int main(int argc, char **argv)
        close(fd);
 
        if(noprocess) {
-               free(infilename);
+               myfree(infilename);
                exit(EXIT_SUCCESS);
        }
 
index 046601341595fa363db87f9e593ee40a2528ab3e..f0b628da6afb8b3f8c5e7ef34da26d9341951908 100644 (file)
@@ -50,6 +50,7 @@
 #include "log_error.h"
 #include "mygetline.h"
 #include "wrappers.h"
+#include "memory.h"
 
 char *bounce_from_adr(const char *recipient, const char *listadr,
                      const char *mailfilename)
@@ -58,7 +59,7 @@ char *bounce_from_adr(const char *recipient, const char *listadr,
        char *indexstr, *listdomain, *a, *mymailfilename;
        size_t len;
 
-       mymailfilename = strdup(mailfilename);
+       mymailfilename = mystrdup(mailfilename);
        if (!mymailfilename) {
                return NULL;
        }
@@ -70,26 +71,26 @@ char *bounce_from_adr(const char *recipient, const char *listadr,
                indexstr = mymailfilename;
        }
 
-       myrecipient = strdup(recipient);
+       myrecipient = mystrdup(recipient);
        if (!myrecipient) {
-               free(mymailfilename);
+               myfree(mymailfilename);
                return NULL;
        }
        a = strchr(myrecipient, '@');
        if (a) *a = '=';
 
-       mylistadr = strdup(listadr);
+       mylistadr = mystrdup(listadr);
        if (!mylistadr) {
-               free(mymailfilename);
-               free(myrecipient);
+               myfree(mymailfilename);
+               myfree(myrecipient);
                return NULL;
        }
 
        listdomain = strchr(mylistadr, '@');
        if (!listdomain) {
-               free(mymailfilename);
-               free(myrecipient);
-               free(mylistadr);
+               myfree(mymailfilename);
+               myfree(myrecipient);
+               myfree(mylistadr);
                return NULL;
        }
        *listdomain++ = '\0';
@@ -97,31 +98,31 @@ char *bounce_from_adr(const char *recipient, const char *listadr,
        /* 12 = RECIPDELIM + "bounces-" + "-" + "@" + NUL */
        len = strlen(mylistadr) + strlen(myrecipient) + strlen(indexstr)
                 + strlen(listdomain) + 12;
-       bounceaddr = malloc(len);
+       bounceaddr = mymalloc(len);
        if (!bounceaddr) {
-               free(myrecipient);
-               free(mylistadr);
+               myfree(myrecipient);
+               myfree(mylistadr);
                return NULL;
        }
        snprintf(bounceaddr, len, "%s%cbounces-%s-%s@%s", mylistadr, RECIPDELIM,
                 myrecipient, indexstr, listdomain);
 
-       free(myrecipient);
-       free(mylistadr);
-       free(mymailfilename);
+       myfree(myrecipient);
+       myfree(mylistadr);
+       myfree(mymailfilename);
 
        return bounceaddr;
 }
 
 int bouncemail(const char *listdir, const char *mlmmjbounce, const char *from)
 {
-       char *myfrom = strdup(from);
+       char *myfrom = mystrdup(from);
        char *addr, *num, *c;
        size_t len;
        pid_t pid = 0;
 
        if((c = strchr(myfrom, '@')) == NULL) {
-               free(myfrom);
+               myfree(myfrom);
                return 0; /* Success when malformed 'from' */
        }
        *c = '\0';
@@ -131,7 +132,7 @@ int bouncemail(const char *listdir, const char *mlmmjbounce, const char *from)
        myfrom = strchr(c, '-');
        myfrom++;
        len = num - myfrom - 1;
-       addr = malloc(len + 1);
+       addr = mymalloc(len + 1);
        addr[len] = '\0';
        strncpy(addr, myfrom, len);
 
@@ -171,7 +172,7 @@ int send_mail(int sockfd, const char *from, const char *to,
        if(reply) {
                log_error(LOG_ARGS, "Error in MAIL FROM. Reply = [%s]",
                                reply);
-               free(reply);
+               myfree(reply);
                write_rset(sockfd);
                checkwait_smtpreply(sockfd, MLMMJ_RSET);
                return MLMMJ_FROM;
@@ -188,12 +189,12 @@ int send_mail(int sockfd, const char *from, const char *to,
                checkwait_smtpreply(sockfd, MLMMJ_RSET);
                if(mlmmjbounce && ((reply[0] == '4') || (reply[0] == '5'))
                                && (reply[1] == '5')) {
-                       free(reply);
+                       myfree(reply);
                        return bouncemail(listdir, mlmmjbounce, from);
                } else {
                        log_error(LOG_ARGS, "Error in RCPT TO. Reply = [%s]",
                                        reply);
-                       free(reply);
+                       myfree(reply);
                        return MLMMJ_RCPTTO;
                }
        }
@@ -207,7 +208,7 @@ int send_mail(int sockfd, const char *from, const char *to,
        reply = checkwait_smtpreply(sockfd, MLMMJ_DATA);
        if(reply) {
                log_error(LOG_ARGS, "Error with DATA. Reply = [%s]", reply);
-               free(reply);
+               myfree(reply);
                write_rset(sockfd);
                checkwait_smtpreply(sockfd, MLMMJ_RSET);
                return MLMMJ_DATA;
@@ -238,7 +239,7 @@ int send_mail(int sockfd, const char *from, const char *to,
                log_error(LOG_ARGS, "Mailserver did not ack end of mail.\n"
                                "<CR><LF>.<CR><LF> was written, to no"
                                "avail. Reply = [%s]", reply);
-               free(reply);
+               myfree(reply);
                write_rset(sockfd);
                checkwait_smtpreply(sockfd, MLMMJ_RSET);
                return MLMMJ_DOT;
@@ -258,16 +259,16 @@ int initsmtp(int *sockfd, const char *relayhost)
        if((reply = checkwait_smtpreply(*sockfd, MLMMJ_CONNECT)) != NULL) {
                log_error(LOG_ARGS, "No proper greeting to our connect"
                          "Reply: [%s]", reply);
-               free(reply);
+               myfree(reply);
                retval = MLMMJ_CONNECT;
                /* FIXME: Queue etc. */
        }       
        write_helo(*sockfd, myhostname);
-       free(myhostname);
+       myfree(myhostname);
        if((reply = checkwait_smtpreply(*sockfd, MLMMJ_HELO)) != NULL) {
                log_error(LOG_ARGS, "Error with HELO. Reply: [%s]", reply);
                /* FIXME: quit and tell admin to configure correctly */
-               free(reply);
+               myfree(reply);
                retval = MLMMJ_HELO;
        }
 
@@ -284,7 +285,7 @@ int endsmtp(int *sockfd)
        if((reply = checkwait_smtpreply(*sockfd, MLMMJ_QUIT)) != 0) {
                log_error(LOG_ARGS, "Mailserver would not let us QUIT. "
                          "We close the socket anyway though.");
-               free(reply);
+               myfree(reply);
                retval = MLMMJ_QUIT;
        }
 
@@ -320,7 +321,7 @@ int send_mail_many(int sockfd, const char *from, const char *replyto,
                        len = next - cur;
                        if(next == start + st.st_size - 1 && *next != '\n')
                                len++;
-                       addr = malloc(len + 1);
+                       addr = mymalloc(len + 1);
                        strncpy(addr, cur, len);
                        addr[len] = '\0';
                        cur = next + 1;
@@ -335,30 +336,30 @@ int send_mail_many(int sockfd, const char *from, const char *replyto,
                                                     archivefilename);
                        sendres = send_mail(sockfd, bounceaddr, addr, replyto,
                                  mailmap, mailsize, listdir, mlmmjbounce);
-                       free(bounceaddr);
+                       myfree(bounceaddr);
                }
                if(sendres && listaddr && archivefilename) {
                        /* we failed, so save the addresses and bail */
                        index = mybasename(archivefilename);    
                        dirname = concatstr(3, listdir, "/requeue/", index);
-                       free(index);
+                       myfree(index);
                        if(mkdir(dirname, 0750) < 0) {
                                log_error(LOG_ARGS, "Could not mkdir(%s) for "
                                                    "requeueing. Mail cannot "
                                                    "be requeued.", dirname);
-                               free(dirname);
-                               free(addr);
+                               myfree(dirname);
+                               myfree(addr);
                                return -1;
                        }
                        addrfilename = concatstr(2, dirname, "/subscribers");
-                       free(dirname);
+                       myfree(dirname);
                        addrfd = open(addrfilename, O_WRONLY|O_CREAT|O_APPEND,
                                                        S_IRUSR|S_IWUSR);
                        if(addrfd < 0) {
                                log_error(LOG_ARGS, "Could not write to %s",
                                                    addrfilename);
-                               free(addrfilename);
-                               free(addr);
+                               myfree(addrfilename);
+                               myfree(addr);
                                return -1;
                        } else { /* dump the remaining addresses */
                                do {
@@ -369,18 +370,18 @@ int send_mail_many(int sockfd, const char *from, const char *replyto,
                                                        "Could not add [%s] "
                                                        "to requeue address "
                                                        "file.", addr);
-                                       free(addr);
+                                       myfree(addr);
                                        addr = mygetline(subfd);
                                } while(addr);
                        }
                        
-                       free(addr);
-                       free(addrfilename);
+                       myfree(addr);
+                       myfree(addrfilename);
                        close(addrfd);
 
                        return -1;
                }
-               free(addr);
+               myfree(addr);
        }
        return 0;
 }      
@@ -428,7 +429,7 @@ int main(int argc, char **argv)
 
        bindir = mydirname(argv[0]);
        mlmmjbounce = concatstr(2, bindir, "/mlmmj-bounce");
-       free(bindir);
+       myfree(bindir);
        
        while ((opt = getopt(argc, argv, "aVDhm:l:L:R:F:T:r:s:")) != -1){
                switch(opt) {
@@ -478,7 +479,7 @@ int main(int argc, char **argv)
        }
 
        if(!listctrl)
-               listctrl = strdup("0");
+               listctrl = mystrdup("0");
 
        
        /* get the list address */
@@ -524,7 +525,7 @@ int main(int argc, char **argv)
                if((subfd = open(subfilename, O_RDONLY)) < 0) {
                        log_error(LOG_ARGS, "Could not open '%s':",
                                            subfilename);
-                       free(subfilename);
+                       myfree(subfilename);
                        /* No moderators is no error. Could be the sysadmin
                         * likes to do it manually.
                         */
@@ -547,13 +548,13 @@ int main(int argc, char **argv)
        if(archive) {
                mindex = incindexfile((const char *)listdir);
                len = strlen(listdir) + 9 + 20;
-               archivefilename = malloc(len);
+               archivefilename = mymalloc(len);
                snprintf(archivefilename, len, "%s/archive/%d", listdir,
                         mindex);
        }
 
        if(!relayhost)
-               relayhost = strdup(RELAYHOST);
+               relayhost = mystrdup(RELAYHOST);
 
        switch(listctrl[0]) {
        case '1': /* A single mail is to be sent */
@@ -568,7 +569,7 @@ int main(int argc, char **argv)
                        tmpstr = concatstr(2, mailfilename, ".mailfrom");
                        tmpfd = open(tmpstr, O_WRONLY|O_CREAT|O_TRUNC,
                                                S_IRUSR|S_IWUSR);
-                       free(tmpstr);
+                       myfree(tmpstr);
                        if(tmpfd >= 0) {
                                writen(tmpfd, bounceaddr, strlen(to_addr));
                                fsync(tmpfd);
@@ -577,7 +578,7 @@ int main(int argc, char **argv)
                        tmpstr = concatstr(2, mailfilename, ".reciptto");
                        tmpfd = open(tmpstr, O_WRONLY|O_CREAT|O_TRUNC,
                                                S_IRUSR|S_IWUSR);
-                       free(tmpstr);
+                       myfree(tmpstr);
                        if(tmpfd >= 0) {
                                writen(tmpfd, to_addr, strlen(bounceaddr));
                                fsync(tmpfd);
@@ -588,7 +589,7 @@ int main(int argc, char **argv)
                                                      ".reply-to");
                                tmpfd = open(tmpstr, O_WRONLY|O_CREAT|O_TRUNC,
                                                        S_IRUSR|S_IWUSR);
-                               free(tmpstr);
+                               myfree(tmpstr);
                                if(tmpfd >= 0) {
                                        writen(tmpfd, replyto,
                                                strlen(replyto));
@@ -630,10 +631,10 @@ int main(int argc, char **argv)
                if((subddir = opendir(subddirname)) == NULL) {
                        log_error(LOG_ARGS, "Could not opendir(%s)",
                                            subddirname);
-                       free(subddirname);
+                       myfree(subddirname);
                        exit(EXIT_FAILURE);
                }
-               free(subddirname);
+               myfree(subddirname);
 
                while((dp = readdir(subddir)) != NULL) {
                        if(!strcmp(dp->d_name, "."))
@@ -645,10 +646,10 @@ int main(int argc, char **argv)
                        if((subfd = open(subfilename, O_RDONLY)) < 0) {
                                log_error(LOG_ARGS, "Could not open '%s'",
                                                    subfilename);
-                               free(subfilename);
+                               myfree(subfilename);
                                continue;
                        }
-                       free(subfilename);
+                       myfree(subfilename);
 
                        initsmtp(&sockfd, relayhost);
                        sendres = send_mail_many(sockfd, NULL, NULL, mailmap,
@@ -674,7 +675,7 @@ int main(int argc, char **argv)
        
        if(archive) {
                rename(mailfilename, archivefilename);
-               free(archivefilename);
+               myfree(archivefilename);
        } else if(deletewhensent)
                unlink(mailfilename);
 
index 4d3a1c8fe99d0095e3961a69ffa9732907a2aaa1..18edbb5ff9927bb38b62edb94b0125232a89804a 100644 (file)
@@ -41,6 +41,7 @@
 #include "subscriberfuncs.h"
 #include "log_error.h"
 #include "mygetline.h"
+#include "memory.h"
 
 void confirm_sub(const char *listdir, const char *listaddr,
                const char *subaddr, const char *mlmmjsend)
@@ -53,10 +54,10 @@ void confirm_sub(const char *listdir, const char *listaddr,
 
        if((subtextfd = open(subtextfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", subtextfilename);
-               free(subtextfilename);
+               myfree(subtextfilename);
                exit(EXIT_FAILURE);
        }
-       free(subtextfilename);
+       myfree(subtextfilename);
 
        listname = genlistname(listaddr);
        listfqdn = genlistfqdn(listaddr);
@@ -67,11 +68,11 @@ void confirm_sub(const char *listdir, const char *listaddr,
        if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", queuefilename);
-               free(queuefilename);
-               free(randomstr);
+               myfree(queuefilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
-       free(randomstr);
+       myfree(randomstr);
 
        fromaddr = concatstr(3, listname, "+bounces-help@", listfqdn);
 
@@ -81,25 +82,27 @@ void confirm_sub(const char *listdir, const char *listaddr,
                log_error(LOG_ARGS, "Could not write welcome mail");
                exit(EXIT_FAILURE);
        }
-       free(s1);
+       myfree(s1);
 
        while((buf = mygetline(subtextfd))) {
                if(strncmp(buf, "*LSTADDR*", 9) == 0) {
                        if(writen(queuefd, listaddr, strlen(listaddr)) < 0) {
-                               log_error(LOG_ARGS, "Could not write welcome mail");
+                               log_error(LOG_ARGS, "Could not write welcome"
+                                               " mail");
                                exit(EXIT_FAILURE);
                        }
                } else {
                        if(writen(queuefd, buf, strlen(buf)) < 0) {
-                               log_error(LOG_ARGS, "Could not write welcome mail");
+                               log_error(LOG_ARGS, "Could not write welcome"
+                                               " mail");
                                exit(EXIT_FAILURE);
                        }
                }
-               free(buf);
+               myfree(buf);
        }
 
-       free(listname);
-       free(listfqdn);
+       myfree(listname);
+       myfree(listfqdn);
        close(subtextfd);
        close(queuefd);
 
@@ -128,8 +131,8 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
        if((subconffd = open(confirmfilename, O_RDWR|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", confirmfilename);
-               free(confirmfilename);
-               free(randomstr);
+               myfree(confirmfilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
 
@@ -138,7 +141,7 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
                exit(EXIT_FAILURE);
        }
        close(subconffd);
-       free(confirmfilename);
+       myfree(confirmfilename);
 
        confirmaddr = concatstr(5, listname, "+confsub-", randomstr, "@",
                                   listfqdn);
@@ -150,22 +153,22 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
 
        if((subtextfd = open(subtextfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", subtextfilename);
-               free(randomstr);
-               free(subtextfilename);
+               myfree(randomstr);
+               myfree(subtextfilename);
                exit(EXIT_FAILURE);
        }
-       free(subtextfilename);
+       myfree(subtextfilename);
 
        queuefilename = concatstr(3, listdir, "/queue/", randomstr);
 
        if((queuefd = open(queuefilename, O_RDWR|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", queuefilename);
-               free(queuefilename);
-               free(randomstr);
+               myfree(queuefilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
-       free(randomstr);
+       myfree(randomstr);
 
        s1 = concatstr(9, "From: ", listname, "+help@", listfqdn, "\nTo: ", 
                        subaddr, "\nSubject: Confirm subscribe to ", listaddr,
@@ -175,7 +178,7 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
                exit(EXIT_FAILURE);
        }
 
-       free(s1);
+       myfree(s1);
 
        while((buf = mygetline(subtextfd))) {
                if(strncmp(buf, "*LSTADDR*", 9) == 0) {
@@ -206,8 +209,8 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
                }
        }
 
-       free(listname);
-       free(listfqdn);
+       myfree(listname);
+       myfree(listfqdn);
        close(subtextfd);
        close(queuefd);
 
@@ -253,7 +256,7 @@ int main(int argc, char **argv)
 
        bindir = mydirname(argv[0]);
        mlmmjsend = concatstr(2, bindir, "/mlmmj-send");
-       free(bindir);
+       myfree(bindir);
 
        while ((opt = getopt(argc, argv, "hcCVL:a:")) != -1) {
                switch(opt) {
@@ -341,7 +344,7 @@ int main(int argc, char **argv)
                }
        } else {
                myunlock(subfilefd);
-               free(subfilename);
+               myfree(subfilename);
                close(subfilefd);
                
                return EXIT_SUCCESS;
@@ -350,7 +353,7 @@ int main(int argc, char **argv)
        if(confirmsub)
                confirm_sub(listdir, listaddr, address, mlmmjsend);
 
-       free(listaddr);
+       myfree(listaddr);
 
        return EXIT_SUCCESS;
 }
index cdcc15d4b5ad6f22a95077aac713d0fa24bb619d..ba04099a08d7bb1141445d0237d99dcccf189020 100644 (file)
@@ -41,6 +41,7 @@
 #include "subscriberfuncs.h"
 #include "strgen.h"
 #include "log_error.h"
+#include "memory.h"
 
 void confirm_unsub(const char *listdir, const char *listaddr,
                   const char *subaddr, const char *mlmmjsend)
@@ -53,10 +54,10 @@ void confirm_unsub(const char *listdir, const char *listaddr,
 
        if((subtextfd = open(subtextfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", subtextfilename);
-               free(subtextfilename);
+               myfree(subtextfilename);
                exit(EXIT_FAILURE);
        }
-       free(subtextfilename);
+       myfree(subtextfilename);
 
        listname = genlistname(listaddr);
        listfqdn = genlistfqdn(listaddr);
@@ -67,11 +68,11 @@ void confirm_unsub(const char *listdir, const char *listaddr,
        if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", queuefilename);
-               free(queuefilename);
-               free(randomstr);
+               myfree(queuefilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
-       free(randomstr);
+       myfree(randomstr);
 
        fromaddr = concatstr(3, listname, "+bounces-help@", listfqdn);
 
@@ -84,7 +85,7 @@ void confirm_unsub(const char *listdir, const char *listaddr,
                exit(EXIT_FAILURE);
        }
 
-       free(s1);
+       myfree(s1);
 
        while((buf = mygetline(subtextfd))) {
                if(strncmp(buf, "*LSTADDR*", 9) == 0) {
@@ -102,8 +103,8 @@ void confirm_unsub(const char *listdir, const char *listaddr,
                }
        }
 
-       free(listname);
-       free(listfqdn);
+       myfree(listname);
+       myfree(listfqdn);
        close(subtextfd);
        close(queuefd);
 
@@ -131,12 +132,12 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr,
        if((subconffd = open(confirmfilename, O_WRONLY|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", confirmfilename);
-               free(confirmfilename);
-               free(randomstr);
+               myfree(confirmfilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
 
-       free(confirmfilename);
+       myfree(confirmfilename);
 
        if(writen(subconffd, subaddr, strlen(subaddr)) < 0) {
                log_error(LOG_ARGS, "Could not write unsubconffile");
@@ -153,22 +154,22 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr,
 
        if((subtextfd = open(subtextfilename, O_RDONLY)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", subtextfilename);
-               free(randomstr);
-               free(subtextfilename);
+               myfree(randomstr);
+               myfree(subtextfilename);
                exit(EXIT_FAILURE);
        }
-       free(subtextfilename);
+       myfree(subtextfilename);
 
        queuefilename = concatstr(3, listdir, "/queue/", randomstr);
 
        if((queuefd = open(queuefilename, O_WRONLY|O_CREAT|O_EXCL,
                                        S_IRUSR|S_IWUSR)) < 0) {
                log_error(LOG_ARGS, "Could not open '%s'", queuefilename);
-               free(queuefilename);
-               free(randomstr);
+               myfree(queuefilename);
+               myfree(randomstr);
                exit(EXIT_FAILURE);
        }
-       free(randomstr);
+       myfree(randomstr);
 
        s1 = concatstr(9, "From: ", listname, "+help@", listfqdn, "\nTo: ",
                        subaddr, "\nSubject: Confirm unsubscribe from ",
@@ -179,7 +180,7 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr,
                exit(EXIT_FAILURE);
        }
 
-       free(s1);
+       myfree(s1);
 
        while((buf = mygetline(subtextfd))) {
                if(strncmp(buf, "*LSTADDR*", 9) == 0) {
@@ -210,8 +211,8 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr,
                }
        }
 
-       free(listname);
-       free(listfqdn);
+       myfree(listname);
+       myfree(listfqdn);
        close(subtextfd);
        close(queuefd);
 
@@ -293,7 +294,7 @@ int main(int argc, char **argv)
 
        bindir = mydirname(argv[0]);
        mlmmjsend = concatstr(2, bindir, "/mlmmj-send");
-       free(bindir);
+       myfree(bindir);
 
        while ((opt = getopt(argc, argv, "hcCVL:a:")) != -1) {
                switch(opt) {
@@ -339,10 +340,10 @@ int main(int argc, char **argv)
        if((subddir = opendir(subddirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)",
                                    subddirname);
-               free(subddirname);
+               myfree(subddirname);
                exit(EXIT_FAILURE);
        }
-       free(subddirname);
+       myfree(subddirname);
        while((dp = readdir(subddir)) != NULL) {
                if(!strcmp(dp->d_name, "."))
                        continue;
@@ -354,14 +355,14 @@ int main(int argc, char **argv)
                subread = open(subreadname, O_RDWR);
                if(subread == -1) {
                        log_error(LOG_ARGS, "Could not open '%s'", subreadname);
-                       free(subreadname);
+                       myfree(subreadname);
                        continue;
                }
 
                suboff = find_subscriber(subread, address);
                if(suboff == -1) {
                        close(subread);
-                       free(subreadname);
+                       myfree(subreadname);
                        continue;
                }
 
@@ -370,7 +371,7 @@ int main(int argc, char **argv)
                        log_error(LOG_ARGS, "Error locking '%s' file",
                                        subreadname);
                        close(subread);
-                       free(subreadname);
+                       myfree(subreadname);
                        continue;
                }
 
@@ -383,8 +384,8 @@ int main(int argc, char **argv)
                                        subwritename);
                        myunlock(subread);
                        close(subread);
-                       free(subreadname);
-                       free(subwritename);
+                       myfree(subreadname);
+                       myfree(subwritename);
                        continue;
                }
 
@@ -395,8 +396,8 @@ int main(int argc, char **argv)
                        myunlock(subread);
                        close(subread);
                        close(subwrite);
-                       free(subreadname);
-                       free(subwritename);
+                       myfree(subreadname);
+                       myfree(subwritename);
                        continue;
                }
 
@@ -407,8 +408,8 @@ int main(int argc, char **argv)
                        close(subread);
                        close(subwrite);
                        unlink(subwritename);
-                       free(subreadname);
-                       free(subwritename);
+                       myfree(subreadname);
+                       myfree(subwritename);
                        continue;
                }
 
@@ -423,8 +424,8 @@ int main(int argc, char **argv)
                                myunlock(subwrite);
                                close(subread);
                                close(subwrite);
-                               free(subreadname);
-                               free(subwritename);
+                               myfree(subreadname);
+                               myfree(subwritename);
                                continue;
                        }
                } else /* unsubres == 0, no subscribers left */
@@ -434,14 +435,14 @@ int main(int argc, char **argv)
                myunlock(subwrite);
                close(subread);
                close(subwrite);
-               free(subreadname);
-               free(subwritename);
+               myfree(subreadname);
+               myfree(subwritename);
 
                if(confirmunsub)
                        confirm_unsub(listdir, listaddr, address, mlmmjsend);
        }
        closedir(subddir);
-       free(listaddr);
+       myfree(listaddr);
 
        return EXIT_SUCCESS;
 }
index 066ea09b5d1bba59e89f5610edbe1290e925c66f..84bb3002cbc9bf9c34b4bcc0b999c6eb034796db 100644 (file)
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
+
 #include "mygetline.h"
+#include "memory.h"
 
 char *mygetline(int fd)
 {
        size_t i = 0, res, buf_size = BUFSIZE;  /* initial buffer size */
-       char *buf = malloc(buf_size);
+       char *buf = mymalloc(buf_size);
        char ch;
 
        buf[0] = '\0';
@@ -41,7 +43,7 @@ char *mygetline(int fd)
                        if(errno == EINTR)
                                continue;
                        else {
-                               free(buf);
+                               myfree(buf);
                                return NULL;
                        }
                }
@@ -50,14 +52,14 @@ char *mygetline(int fd)
                                buf[i] = '\0';
                                return buf;
                        } else {
-                               free(buf);
+                               myfree(buf);
                                return NULL;
                        }
                }
 
                if(i == buf_size - 1) {
                        buf_size *= 2;
-                       buf = realloc(buf, buf_size);
+                       buf = myrealloc(buf, buf_size);
                }
                buf[i++] = ch;
                if(ch == '\n') {
index 8db95a427cc7882e2f35b6a5fe8a7cc5a81ba768..0eb5719b0c5c034d0ea21441c5d95e2f09d9737b 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "strgen.h"
 #include "wrappers.h"
+#include "memory.h"
 
 int openrandexclrw(const char *dir, const char *prefix, mode_t mode)
 {
@@ -38,14 +39,16 @@ int openrandexclrw(const char *dir, const char *prefix, mode_t mode)
 
        do {
                 randomstr = random_str();
-               free(filename);  /* It is OK to free() NULL, as this
-                                   will in the first iteration. */
+               myfree(filename);  /* It is OK to free NULL, as this
+                                   will do in the first iteration. */
                filename = concatstr(4, dir, "/", prefix, randomstr);
-               free(randomstr);
+               myfree(randomstr);
 
                 fd = open(filename, O_RDWR|O_CREAT|O_EXCL, mode);
 
        } while ((fd < 0) && (errno == EEXIST));
 
+       /* TODO error checking, bail out */
+
        return fd;
 }
index 9a4b0e2cd9c3537ffa1e091296c7cd498a35a2b6..b30c3f12e9aeae7ac797484696a0d0733840af09 100644 (file)
@@ -35,6 +35,7 @@
 #include "log_error.h"
 #include "mygetline.h"
 #include "wrappers.h"
+#include "memory.h"
 
 char *prepstdreply(const char *listdir, const char *filename, const char *from,
                   const char *to, const char *replyto, const char *subject,
@@ -46,23 +47,25 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
 
        tmp = concatstr(3, listdir, "/text/", filename);
        infd = open(tmp, O_RDONLY);
-       free(tmp);
+       myfree(tmp);
        if(infd < 0) {
                log_error(LOG_ARGS, "Could not open std mail %s", filename);
                return NULL;
        }
 
-       tmp = concatstr(6, "From: ", from, "\nTo: ", to, "\nSubject: ", subject);
+       tmp = concatstr(6, "From: ", from,
+                       "\nTo: ", to,
+                       "\nSubject: ", subject);
        if(replyto)
                str = concatstr(3, tmp, "\nReply-To: ", replyto, "\n\n");
        else
                str = concatstr(2, tmp, "\n\n");
                
-       free(tmp);
+       myfree(tmp);
 
        tmp = random_str();
        retstr = concatstr(3, listdir, "/queue/", random);
-       free(tmp);
+       myfree(tmp);
        outfd = open(retstr, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
        if(outfd < 0) {
                log_error(LOG_ARGS, "Could not open std mail %s", tmp);
@@ -73,24 +76,24 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
                log_error(LOG_ARGS, "Could not write std mail");
                return NULL;
        }
-       free(str);
+       myfree(str);
 
        while((str = mygetline(infd))) {
                for(i = 0; i < tokencount; i++) {
                        if(strncmp(str, data[i*2], strlen(data[i*2])) == 0) {
-                               free(str);
-                               str = strdup(data[(i*2)+1]);
+                               myfree(str);
+                               str = mystrdup(data[(i*2)+1]);
                        }
                }
                if(writen(outfd, str, strlen(str)) < 0) {
                        log_error(LOG_ARGS, "Could not write std mail");
                        return NULL;
                }
-               free(str);
+               myfree(str);
        }
        
        fsync(outfd);
        close(outfd);
 
        return retstr;
-}      
+}
index d4c0c7a73a1a62259ed4fc37f2b6a216d86ba469..bc001cf2ca71fb2592cc3a5b2ab4a26a4b9bbec1 100644 (file)
@@ -39,6 +39,7 @@
 #include "wrappers.h"
 #include "mygetline.h"
 #include "prepstdreply.h"
+#include "memory.h"
 
 void send_help(const char *listdir, const char *emailaddr,
               const char *mlmmjsend)
@@ -69,14 +70,14 @@ void send_help(const char *listdir, const char *emailaddr,
                exit(EXIT_FAILURE);
        }
        
-       free(fromstr);
-       free(listaddr);
-       free(listname);
-       free(listfqdn);
-       free(maildata[1]);
-       free(maildata[3]);
-       free(maildata[5]);
-       free(subject);
+       myfree(fromstr);
+       myfree(listaddr);
+       myfree(listname);
+       myfree(listfqdn);
+       myfree(maildata[1]);
+       myfree(maildata[3]);
+       myfree(maildata[5]);
+       myfree(subject);
 
        execlp(mlmmjsend, mlmmjsend,
                                "-l", "1",
index 10eaccddc51ea18ac047e120446074d805681a0a..99c1b042e36bab73872200ebba2441839816dfa3 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "strgen.h"
 #include "statctrl.h"
+#include "memory.h"
 
 int statctrl(const char *listdir, const char *ctrlstr)
 {
@@ -35,7 +36,7 @@ int statctrl(const char *listdir, const char *ctrlstr)
        int res;
        
        res = stat(filename, &st);
-       free(filename);
+       myfree(filename);
        
        if(res == 0)
                return 1;
index a6259e038f154bf3467ea734458ac8c1cd647935..6398f43589633f8dfb5b29ecbe3d93f0c994cbb4 100644 (file)
 
 #include "strgen.h"
 #include "wrappers.h"
+#include "memory.h"
 
 char *random_str()
 {
        size_t len = 32;
-       char *dest = malloc(len);
+       char *dest = mymalloc(len);
 
        snprintf(dest, len, "%X%X", random_int(), random_int());
 
@@ -45,11 +46,11 @@ char *random_str()
 char *random_plus_addr(const char *addr)
 {
        size_t len = strlen(addr) + 16;
-       char *dest = malloc(len);
+       char *dest = mymalloc(len);
        char *atsign;
        char *tmpstr;
 
-       tmpstr = malloc(len);
+       tmpstr = mymalloc(len);
        snprintf(tmpstr, len, "%s", addr);
 
        atsign = index(tmpstr, '@');
@@ -57,7 +58,7 @@ char *random_plus_addr(const char *addr)
 
        snprintf(dest, len, "%d-%s", random_int(), tmpstr);
 
-       free(tmpstr);
+       myfree(tmpstr);
        
        return dest;
 }
@@ -65,7 +66,7 @@ char *random_plus_addr(const char *addr)
 char *headerstr(const char *headertoken, const char *str)
 {
        size_t len = strlen(headertoken) + strlen(str) + 2;
-       char *dest = malloc(len);
+       char *dest = mymalloc(len);
 
        snprintf(dest, len, "%s%s\n", headertoken, str);
 
@@ -79,7 +80,7 @@ char *genlistname(const char *listaddr)
 
        atsign = index(listaddr, '@');
        len = atsign - listaddr + 1;
-       dest = malloc(len);
+       dest = mymalloc(len);
        
        snprintf(dest, len, "%s", listaddr);
 
@@ -93,7 +94,7 @@ char *genlistfqdn(const char *listaddr)
 
        atsign = index(listaddr, '@');
        len = strlen(listaddr) - (atsign - listaddr);
-       dest = malloc(len);
+       dest = mymalloc(len);
        snprintf(dest, len, "%s", atsign + 1);
 
        return dest;
@@ -115,7 +116,7 @@ char *concatstr(int count, ...)
                         len += strlen(str);
         }
 
-        retstr = malloc(len + 1);
+        retstr = mymalloc(len + 1);
         retstr[0] = retstr[len] = 0;
 
         va_start(arg, count);
@@ -142,20 +143,20 @@ char *hostnamestr()
         hostname[sizeof(hostname)-1] = '\0';
         hostlookup = gethostbyname(hostname);
 
-        return strdup(hostlookup->h_name);
+        return mystrdup(hostlookup->h_name);
 }
 
 char *mydirname(const char *path)
 {
        char *mypath, *dname, *ret;
 
-       mypath = strdup(path);
+       mypath = mystrdup(path);
        dname = dirname(mypath);
-       ret = strdup(dname);
+       ret = mystrdup(dname);
 
        /* We don't free mypath until we have strdup()'ed dname, because
         * dirname() returns a pointer into mypath  -- mortenp 20040527 */
-       free(mypath);
+       myfree(mypath);
 
        return ret;
 }
@@ -164,13 +165,13 @@ char *mybasename(const char *path)
 {
        char *mypath, *bname, *ret;
 
-       mypath = strdup(path);
+       mypath = mystrdup(path);
        bname = basename(mypath);
-       ret = strdup(bname);
+       ret = mystrdup(bname);
 
        /* We don't free mypath until we have strdup()'ed bname, because
         * basename() returns a pointer into mypath  -- mortenp 20040527 */
-       free(mypath);
+       myfree(mypath);
        
        return ret;
 }
index 5f170bbf525c3a3771635b8cc20fd6612380e818..a914471c7e486c2f6b838adc07767a8d3db6fc79 100644 (file)
@@ -38,6 +38,7 @@
 #include "log_error.h"
 #include "wrappers.h"
 #include "strgen.h"
+#include "memory.h"
 
 off_t find_subscriber(int fd, const char *address)
 {
@@ -97,11 +98,11 @@ int is_subbed(const char *listdir, const char *address)
        subddirname = concatstr(2, listdir, "/subscribers.d/");
        if((subddir = opendir(subddirname)) == NULL) {
                log_error(LOG_ARGS, "Could not opendir(%s)", subddirname);
-               free(subddirname);
+               myfree(subddirname);
                exit(EXIT_FAILURE);
        }
 
-       free(subddirname);
+       myfree(subddirname);
 
        while((dp = readdir(subddir)) != NULL) {
                if(!strcmp(dp->d_name, "."))
@@ -115,13 +116,13 @@ int is_subbed(const char *listdir, const char *address)
                if(subread < 0) {
                        log_error(LOG_ARGS, "Could not open '%s'",
                                        subreadname);
-                       free(subreadname);
+                       myfree(subreadname);
                        continue;
                }
 
                suboff = find_subscriber(subread, address);
                close(subread);
-               free(subreadname);
+               myfree(subreadname);
 
                if(suboff == -1) {
                        continue;