From: <al...@us...> - 2003-04-16 11:37:55
|
Update of /cvsroot/msyslog/syslog/src In directory sc8-pr-cvs1:/tmp/cvs-serv18954/src Modified Files: modules.c syslogd.c syslogd.h Log Message: use new macros for free() and close() to avoid common mistakes handling file descriptors and pointers Index: modules.c =================================================================== RCS file: /cvsroot/msyslog/syslog/src/modules.c,v retrieving revision 1.171 retrieving revision 1.172 diff -u -d -r1.171 -r1.172 --- modules.c 15 Apr 2003 17:16:40 -0000 1.171 +++ modules.c 16 Apr 2003 11:37:20 -0000 1.172 @@ -250,7 +250,7 @@ if (im_prev == I && im_prev->im_next == NULL) { im_prev->im_fd = -1; } else if (im_prev->im_next == im) { - free (im); + FREE_PTR(im); im_prev->im_next = NULL; } } @@ -259,8 +259,8 @@ if (argv != NULL) { char *f; - for (i = 0; (f = argv[i]) != NULL ; i++) free(f); - free(argv); + for (i = 0; (f = argv[i]) != NULL ; i++) FREE_PTR(f); + FREE_PTR(argv); } return (ret); @@ -403,7 +403,7 @@ m_dprintf(MSYSLOG_INFORMATIVE, "omodule_create: all done for output " "module %s\n", argv[0]); - free(line); + FREE_PTR(line); return (1); @@ -411,7 +411,7 @@ m_dprintf(MSYSLOG_SERIOUS, "%s", err_buf); - if (line) free(line); + FREE_PTR(line); /* free allocated module */ if (f->f_omod == om) { @@ -421,7 +421,7 @@ om_prev->om_next = NULL; } - if (om) free(om); + FREE_PTR(om); return (-1); } @@ -480,14 +480,14 @@ if ((argc % OMODULE_ARGV_MAX) == 18) if ( (*ret = (char **)realloc(*ret, sizeof(char *) * (argc + 20))) == NULL) { - free(line); + FREE_PTR(line); return (-1); } if (*ret != NULL) (*ret)[argc] = NULL; } - free(line); + FREE_PTR(line); return (argc); } @@ -529,7 +529,7 @@ i->im_next = NULL; } - free(im); + FREE_PTR(im); m_dprintf(MSYSLOG_SERIOUS, "addImodule: couldn't config %s input module\n", buf); @@ -592,7 +592,7 @@ o->om_next = NULL; } - free(om); + FREE_PTR(om); return (NULL); } @@ -620,7 +620,7 @@ return (-1); } - free(om->om_name); + FREE_PTR(om->om_name); return (1); } @@ -684,7 +684,7 @@ dlclose(im->h); - free(im); + FREE_PTR(im); } if (last) { @@ -719,7 +719,7 @@ last->om_next = om->om_next; dlclose(om->h); - free(om); + FREE_PTR(om); } if (last != NULL) { Index: syslogd.c =================================================================== RCS file: /cvsroot/msyslog/syslog/src/syslogd.c,v retrieving revision 1.242 retrieving revision 1.243 diff -u -d -r1.242 -r1.243 --- syslogd.c 16 Apr 2003 11:35:30 -0000 1.242 +++ syslogd.c 16 Apr 2003 11:37:20 -0000 1.243 @@ -440,7 +440,7 @@ dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); if (fd > 2) - close(fd); + CLOSE_FD(fd); } } gethostname(LocalHostName, sizeof(LocalHostName)); @@ -482,7 +482,7 @@ sa.sa_flags = SA_NOCLDSTOP | SA_RESTART | SA_ONSTACK; if (sigaltstack(&alt_stack, NULL) < 0 || sigaction(SIGTSTP, &sa, NULL) < 0) { - free(alt_stack.ss_sp); + FREE_PTR(alt_stack.ss_sp); perror(strerror(errno)); exit(-1); } @@ -885,12 +885,9 @@ (*consfile.f_omod->om_func->om_close) (&consfile, consfile.f_omod->ctx); if (consfile.f_omod) { - if (consfile.f_omod->ctx) - free(consfile.f_omod->ctx); - if (consfile.f_omod->status) - free(consfile.f_omod->status); - free(consfile.f_omod); - consfile.f_omod = NULL; + FREE_PTR(consfile.f_omod->ctx); + FREE_PTR(consfile.f_omod->status); + FREE_PTR(consfile.f_omod); } } sigprocmask(SIG_SETMASK, &omask, NULL); @@ -1145,8 +1142,8 @@ for (im = &Inputs; im; im = im->im_next) if (im->im_func && im->im_func->im_close) (*im->im_func->im_close) (im); - else if (im->im_fd) - close(im->im_fd); + else + CLOSE_FD(im->im_fd); if (!Debug && (DaemonFlags == SYSLOGD_LOCKED_PIDFILE)) { struct flock fl; @@ -1215,19 +1212,16 @@ /* free om_ctx om_func and stuff */ om_next = om->om_next; - if (om->ctx) - free(om->ctx); - if (om->status) - free(om->status); - free(om); + FREE_PTR(om->ctx); + FREE_PTR(om->status); + FREE_PTR(om); } next = f->f_next; - if (f->f_program) - free(f->f_program); + FREE_PTR(f->f_program); - free(f); + FREE_PTR(f); } #ifdef REOPEN_MAIN_LIBRARY_ON_HUP @@ -1354,10 +1348,8 @@ if (cfline(cline, f, prog) == 1) { *nextp = f; nextp = &f->f_next; - } else { - free(f); - f = NULL; - } + } else + FREE_PTR(f); } /* close the configuration file */ Index: syslogd.h =================================================================== RCS file: /cvsroot/msyslog/syslog/src/syslogd.h,v retrieving revision 1.114 retrieving revision 1.115 diff -u -d -r1.114 -r1.115 --- syslogd.h 15 Apr 2003 17:17:09 -0000 1.114 +++ syslogd.h 16 Apr 2003 11:37:21 -0000 1.115 @@ -293,7 +293,10 @@ # endif /* SYSLOG_NAMES */ #endif /* typedef of /usr/include/syslog.h */ - - + +#define CLOSE_FD(cfd) { if (cfd != -1) { close(cfd); cfd = -1; } } +#define FREE_PTR(p) { if (p != NULL) { free(p); p = NULL; } } + + #endif /* HAVE_CODE */ |