Fix some more potential leaks and allow full build with dmalloc.

This commit is contained in:
Roy Marples 2012-11-14 10:32:08 +00:00
parent 2534ef40f2
commit 8514c011ea
2 changed files with 20 additions and 11 deletions

View File

@ -251,6 +251,7 @@ writepid(int fd, pid_t pid)
return 0;
}
#ifndef xmalloc
void *
xmalloc(size_t s)
{
@ -262,16 +263,9 @@ xmalloc(size_t s)
exit (EXIT_FAILURE);
/* NOTREACHED */
}
#endif
void *
xzalloc(size_t s)
{
void *value = xmalloc(s);
memset(value, 0, s);
return value;
}
#ifndef xrealloc
void *
xrealloc(void *ptr, size_t s)
{
@ -283,7 +277,9 @@ xrealloc(void *ptr, size_t s)
exit(EXIT_FAILURE);
/* NOTREACHED */
}
#endif
#ifndef xstrdup
char *
xstrdup(const char *str)
{
@ -299,3 +295,13 @@ xstrdup(const char *str)
exit(EXIT_FAILURE);
/* NOTREACHED */
}
#endif
void *
xzalloc(size_t s)
{
void *value = xmalloc(s);
memset(value, 0, s);
return value;
}

View File

@ -97,6 +97,7 @@ static int ifc;
static char *cffile;
static char *pidfile;
static int linkfd = -1, ipv6rsfd = -1, ipv6nsfd = -1;
static uint8_t *packet;
struct dhcp_op {
uint8_t value;
@ -188,6 +189,7 @@ cleanup(void)
for (i = 0; i < ifdc; i++)
free(ifdv[i]);
free(ifdv);
free(packet);
#endif
if (linkfd != -1)
@ -660,7 +662,6 @@ static void
handle_dhcp_packet(void *arg)
{
struct interface *iface = arg;
uint8_t *packet;
struct dhcp_message *dhcp = NULL;
const uint8_t *pp;
ssize_t bytes;
@ -670,7 +671,8 @@ handle_dhcp_packet(void *arg)
/* We loop through until our buffer is empty.
* The benefit is that if we get >1 DHCP packet in our buffer and
* the first one fails for any reason, we can use the next. */
packet = xmalloc(udp_dhcp_len);
if (packet == NULL)
packet = xmalloc(udp_dhcp_len);
for(;;) {
bytes = get_raw_packet(iface, ETHERTYPE_IP,
packet, udp_dhcp_len, &partialcsum);
@ -739,6 +741,7 @@ handle_dhcp_packet(void *arg)
break;
}
free(packet);
packet = NULL;
free(dhcp);
}