From: <ph...@us...> - 2003-01-07 21:56:11
|
Update of /cvsroot/msyslog/syslog/src/modules In directory sc8-pr-cvs1:/tmp/cvs-serv24230/syslog/src/modules Modified Files: ip_misc.c om_refract.c Log Message: watch_fd_input in syslog/src/syslogd.c was not properly recording file-descriptors to be polled. sock_udp in syslog/src/modules/ip_misc.c was using a key variable after freeing it. It also needed to perform a bind on the udp socket after creating it. om_refract_init in syslog/src/modules/om_refract.c had a misspilled varibale. Index: ip_misc.c =================================================================== RCS file: /cvsroot/msyslog/syslog/src/modules/ip_misc.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- ip_misc.c 25 Sep 2002 22:50:16 -0000 1.26 +++ ip_misc.c 7 Jan 2003 21:56:07 -0000 1.27 @@ -235,6 +235,7 @@ sa = (struct sockaddr *) malloc(res->ai_addrlen); memcpy(sa, res->ai_addr, res->ai_addrlen); + *salen = res->ai_addrlen; freeaddrinfo(res); @@ -439,21 +440,30 @@ int sock_udp(char *host, char *port, void **addr, int *addrlen) { - struct sockaddr *sa; - socklen_t salen; + struct sockaddr *sa; + socklen_t salen; + int socket_fd; - if ((sa = resolv_name(host, port, "udp", &salen)) == NULL) - return (-1); + if ( ( sa = resolv_name(host, port, "udp", &salen) ) == NULL ) +return -1; - /* pass struct sockaddr if requested */ - if (addrlen != NULL) - *addrlen = salen; - if (addr != NULL) - *addr = sa; - else - free(sa); + /* USE sa->sa_family BEFORE sa IS FREED */ + if ( ( socket_fd = socket(sa->sa_family, SOCK_DGRAM, 0) ) == -1 ) { + m_dprintf(MSYSLOG_SERIOUS, "could not create udp socket: %s\n", sys_errlist[errno]); +return -1; + } + if ( bind(socket_fd, sa, salen ) != 0 ) { + m_dprintf(MSYSLOG_SERIOUS, "bind failed for udp socket: %s\n", sys_errlist[errno]); +return -1; + } - return (socket(sa->sa_family, SOCK_DGRAM, 0)); + /* pass struct sockaddr if requested */ + if (addrlen != NULL) *addrlen = salen; + + if (addr != NULL) *addr = sa; + else free(sa); /* sa FREED HERE */ + +return socket_fd; } /* Index: om_refract.c =================================================================== RCS file: /cvsroot/msyslog/syslog/src/modules/om_refract.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- om_refract.c 6 Jan 2003 23:17:40 -0000 1.6 +++ om_refract.c 7 Jan 2003 21:56:08 -0000 1.7 @@ -141,7 +141,7 @@ break; case 'c': - ctx->fire_count = strtol(argv[argcnt], &endptr, 0); + ctx->fired_count = strtol(argv[argcnt], &endptr, 0); if (endptr == NULL || endptr == argv[argcnt]) { snprintf(statbuf, sizeof(statbuf), "om_refract_init: " "bad argument to -c option [%s], should be numeric firing count", argv[argcnt]); |