#include "mtr.h"
#include "dns.h"
#include "net.h"
+#include "utils.h"
struct dns_results {
ip_t ip;
else
return strlongip (ctl, ip);
} else {
- r = malloc (sizeof (struct dns_results));
+ r = xmalloc (sizeof (struct dns_results));
//r->ip = *ip;
memcpy (&r->ip, ip, sizeof (r->ip));
r->name = NULL;
char *csumpacket;
int ret;
- csumpacket = malloc(tsize);
- if (!csumpacket)
- error(EXIT_FAILURE, errno, "cannot allocate %zu bytes", tsize);
+ csumpacket = xmalloc(tsize);
memset(csumpacket, (unsigned char) abs(ctl->bitpattern), tsize);
if (alt_checksum && dsize >= 2) {
csumpacket[psize + sizeof(struct UDPHeader)] = 0;
case IPPROTO_UDP:
/* checksum is not mandatory. only calculate if we know ip->saddr */
if (udp->checksum) {
- udpp = (struct UDPv4PHeader *)(malloc(sizeof(struct UDPv4PHeader)));
+ udpp = (struct UDPv4PHeader *)(xmalloc(sizeof(struct UDPv4PHeader)));
udpp->saddr = ip->saddr;
udpp->daddr = ip->daddr;
udpp->protocol = ip->protocol;
packet[iphsize + sizeof(struct UDPHeader)] = ((char *)&checksum_result)[0];
packet[iphsize + sizeof(struct UDPHeader) + 1] = ((char *)&checksum_result)[1];
} else if (ip->saddr) {
- udpp = (struct UDPv4PHeader *)(malloc(sizeof(struct UDPv4PHeader)));
+ udpp = (struct UDPv4PHeader *)(xmalloc(sizeof(struct UDPv4PHeader)));
udpp->saddr = ip->saddr;
udpp->daddr = ip->daddr;
udpp->protocol = ip->protocol;
error(EXIT_FAILURE, errno, "%s: '%s'", errmesg, str);
return 0;
}
+
+extern void *xmalloc(const size_t size)
+{
+ void *ret = malloc(size);
+
+ if (!ret && size)
+ error(EXIT_FAILURE, errno, "cannot allocate %zu bytes", size);
+ return ret;
+}
strncpy(dest, src, n - 1);
dest[n - 1] = 0;
}
+
+extern void *xmalloc(const size_t size);