Mercurial > hg > mlmmj
changeset 245:00eadc106b34
changed to use the new memory wrappers
(my caffeine free week is officially over!)
author | mortenp |
---|---|
date | Sat, 19 Jun 2004 13:44:47 +1000 |
parents | 47d0ad54dc5d |
children | 14fcae5e6be5 |
files | 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 |
diffstat | 25 files changed, 399 insertions(+), 366 deletions(-) [+] |
line wrap: on
line diff
--- a/src/checkwait_smtpreply.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/checkwait_smtpreply.c Sat Jun 19 13:44:47 2004 +1000 @@ -24,8 +24,10 @@ #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 @@ 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')
--- a/src/ctrlvalue.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/ctrlvalue.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ int ctrlfd; ctrlfd = open(filename, O_RDONLY); - free(filename); + myfree(filename); if(ctrlfd < 0) return NULL;
--- a/src/ctrlvalues.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/ctrlvalues.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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;
--- a/src/do_all_the_voodo_here.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/do_all_the_voodo_here.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ " ", hdrline + 9); writen(outfd, subject, strlen(subject)); - free(subject); - free(hdrline); + myfree(subject); + myfree(hdrline); continue; } } @@ -124,7 +125,7 @@ writen(outfd, hdrline, strlen(hdrline)); - free(hdrline); + myfree(hdrline); } /* Just print the rest of the mail */
--- a/src/find_email_adr.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/find_email_adr.c Sat Jun 19 13:44:47 2004 +1000 @@ -21,18 +21,20 @@ * 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 @@ 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 @@ *index_atsign = 'A'; /* Clear it so we don't find it again */ index_atsign = strchr(tempstr, '@'); } - free(tempstr); + myfree(tempstr); return retstruct; }
--- a/src/gethdrline.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/gethdrline.c Sat Jun 19 13:44:47 2004 +1000 @@ -27,6 +27,7 @@ #include "mygetline.h" #include "gethdrline.h" #include "strgen.h" +#include "memory.h" char *gethdrline(int fd) { @@ -43,9 +44,9 @@ 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 @@ } else { tmp = retstr; retstr = concatstr(3, retstr, line, nextline); - free(tmp); + myfree(tmp); return retstr; }
--- a/src/getlistaddr.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/getlistaddr.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ log_error(LOG_ARGS, "Could not open '%s'", tmpstr); exit(EXIT_FAILURE); } - free(tmpstr); + myfree(tmpstr); tmpstr = mygetline(listnamefd);
--- a/src/incindexfile.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/incindexfile.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ myunlock(fd); close(fd); - free(indexfilename); + myfree(indexfilename); return index; }
--- a/src/listcontrol.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/listcontrol.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ " 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 @@ 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 @@ 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 @@ 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 @@ mlmmjunsub); exit(EXIT_FAILURE); } else { - free(tmpstr); + myfree(tmpstr); exit(EXIT_SUCCESS); } } else /* Not a confirm so silently ignore */ @@ -235,9 +236,9 @@ /* 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,
--- a/src/log_error.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/log_error.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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,
--- a/src/mail-functions.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mail-functions.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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; }
--- a/src/mlmmj-bounce.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-bounce.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ *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 @@ int fd; time_t t; - myaddr = strdup(addr); - MY_ASSERT(myaddr); + myaddr = mystrdup(addr); listaddr = getlistaddr(listdir); chomp(listaddr); @@ -114,8 +114,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ a = concatstr(4, listdir, "/bounce/", address, "-probe"); unlink(a); unlink(mailname); - free(a); + myfree(a); exit(EXIT_SUCCESS); } @@ -290,7 +290,7 @@ /* 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 @@ 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 + ":" + 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 @@ if(mailname) unlink(mailname); - free(bfilename); + myfree(bfilename); return EXIT_SUCCESS; }
--- a/src/mlmmj-maintd.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-maintd.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ char *moddirname = concatstr(2, listdir, "/moderation"); int ret = delolder(moddirname, MODREQLIFE); - free(moddirname); + myfree(moddirname); return ret; } @@ -101,7 +102,7 @@ char *discardeddirname = concatstr(2, listdir, "/queue/discarded"); int ret = delolder(discardeddirname, DISCARDEDLIFE); - free(discardeddirname); + myfree(discardeddirname); return ret; } @@ -135,16 +136,16 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ * 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ unlink(filename); } } - free(filename); + myfree(filename); } closedir(bouncedir); @@ -468,17 +469,17 @@ 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 @@ /* 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 @@ 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 @@ 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 @@ /* 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 @@ /* 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ sleep(MAINTD_SLEEP); } - free(mlmmjbounce); - free(mlmmjsend); - free(mlmmjunsub); + myfree(mlmmjbounce); + myfree(mlmmjsend); + myfree(mlmmjunsub); log_free_name();
--- a/src/mlmmj-process.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-process.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ "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 @@ 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 @@ 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 @@ } 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 @@ 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 @@ } 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 @@ "/queue/discarded/", randomstr); rename(donemailname, discardname); - free(donemailname); - free(discardname); + myfree(donemailname); + myfree(discardname); /* TODO: free emailstructs */ exit(EXIT_SUCCESS); } @@ -395,11 +396,11 @@ 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 @@ 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 @@ 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); }
--- a/src/mlmmj-recieve.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-recieve.c Sat Jun 19 13:44:47 2004 +1000 @@ -36,6 +36,7 @@ #include "mygetline.h" #include "strgen.h" #include "log_error.h" +#include "memory.h" extern char *optarg; @@ -64,7 +65,7 @@ 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 @@ } 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 @@ close(fd); if(noprocess) { - free(infilename); + myfree(infilename); exit(EXIT_SUCCESS); }
--- a/src/mlmmj-send.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-send.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 *indexstr, *listdomain, *a, *mymailfilename; size_t len; - mymailfilename = strdup(mailfilename); + mymailfilename = mystrdup(mailfilename); if (!mymailfilename) { return NULL; } @@ -70,26 +71,26 @@ 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 @@ /* 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ "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 @@ 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 @@ } if(!listctrl) - listctrl = strdup("0"); + listctrl = mystrdup("0"); /* get the list address */ @@ -524,7 +525,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ ".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 @@ 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 @@ 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 @@ if(archive) { rename(mailfilename, archivefilename); - free(archivefilename); + myfree(archivefilename); } else if(deletewhensent) unlink(mailfilename);
--- a/src/mlmmj-sub.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-sub.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ exit(EXIT_FAILURE); } close(subconffd); - free(confirmfilename); + myfree(confirmfilename); confirmaddr = concatstr(5, listname, "+confsub-", randomstr, "@", listfqdn); @@ -150,22 +153,22 @@ 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 @@ exit(EXIT_FAILURE); } - free(s1); + myfree(s1); while((buf = mygetline(subtextfd))) { if(strncmp(buf, "*LSTADDR*", 9) == 0) { @@ -206,8 +209,8 @@ } } - free(listname); - free(listfqdn); + myfree(listname); + myfree(listfqdn); close(subtextfd); close(queuefd); @@ -253,7 +256,7 @@ 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 @@ } } else { myunlock(subfilefd); - free(subfilename); + myfree(subfilename); close(subfilefd); return EXIT_SUCCESS; @@ -350,7 +353,7 @@ if(confirmsub) confirm_sub(listdir, listaddr, address, mlmmjsend); - free(listaddr); + myfree(listaddr); return EXIT_SUCCESS; }
--- a/src/mlmmj-unsub.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mlmmj-unsub.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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 @@ exit(EXIT_FAILURE); } - free(s1); + myfree(s1); while((buf = mygetline(subtextfd))) { if(strncmp(buf, "*LSTADDR*", 9) == 0) { @@ -102,8 +103,8 @@ } } - free(listname); - free(listfqdn); + myfree(listname); + myfree(listfqdn); close(subtextfd); close(queuefd); @@ -131,12 +132,12 @@ 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 @@ 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 @@ exit(EXIT_FAILURE); } - free(s1); + myfree(s1); while((buf = mygetline(subtextfd))) { if(strncmp(buf, "*LSTADDR*", 9) == 0) { @@ -210,8 +211,8 @@ } } - free(listname); - free(listfqdn); + myfree(listname); + myfree(listfqdn); close(subtextfd); close(queuefd); @@ -293,7 +294,7 @@ 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 @@ 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 @@ 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 @@ log_error(LOG_ARGS, "Error locking '%s' file", subreadname); close(subread); - free(subreadname); + myfree(subreadname); continue; } @@ -383,8 +384,8 @@ subwritename); myunlock(subread); close(subread); - free(subreadname); - free(subwritename); + myfree(subreadname); + myfree(subwritename); continue; } @@ -395,8 +396,8 @@ myunlock(subread); close(subread); close(subwrite); - free(subreadname); - free(subwritename); + myfree(subreadname); + myfree(subwritename); continue; } @@ -407,8 +408,8 @@ close(subread); close(subwrite); unlink(subwritename); - free(subreadname); - free(subwritename); + myfree(subreadname); + myfree(subwritename); continue; } @@ -423,8 +424,8 @@ 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 @@ 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; }
--- a/src/mygetline.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/mygetline.c Sat Jun 19 13:44:47 2004 +1000 @@ -26,12 +26,14 @@ #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 @@ if(errno == EINTR) continue; else { - free(buf); + myfree(buf); return NULL; } } @@ -50,14 +52,14 @@ 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') {
--- a/src/openrandexclrw.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/openrandexclrw.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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; }
--- a/src/prepstdreply.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/prepstdreply.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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,20 +76,20 @@ 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);
--- a/src/send_help.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/send_help.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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",
--- a/src/statctrl.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/statctrl.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 res; res = stat(filename, &st); - free(filename); + myfree(filename); if(res == 0) return 1;
--- a/src/strgen.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/strgen.c Sat Jun 19 13:44:47 2004 +1000 @@ -31,11 +31,12 @@ #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_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 @@ snprintf(dest, len, "%d-%s", random_int(), tmpstr); - free(tmpstr); + myfree(tmpstr); return dest; } @@ -65,7 +66,7 @@ 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 @@ atsign = index(listaddr, '@'); len = atsign - listaddr + 1; - dest = malloc(len); + dest = mymalloc(len); snprintf(dest, len, "%s", listaddr); @@ -93,7 +94,7 @@ 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 @@ len += strlen(str); } - retstr = malloc(len + 1); + retstr = mymalloc(len + 1); retstr[0] = retstr[len] = 0; va_start(arg, count); @@ -142,20 +143,20 @@ 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 *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; }
--- a/src/subscriberfuncs.c Sat Jun 19 13:36:08 2004 +1000 +++ b/src/subscriberfuncs.c Sat Jun 19 13:44:47 2004 +1000 @@ -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 @@ 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 @@ 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;