diff options
author | Francois-Xavier Le Bail <devel.fx.lebail@orange.fr> | 2018-02-25 11:04:39 +0100 |
---|---|---|
committer | Francois-Xavier Le Bail <devel.fx.lebail@orange.fr> | 2018-02-25 20:58:27 +0100 |
commit | 5ae22f41a8e2152c8618227a0cc45b9de61a0f70 (patch) | |
tree | bd2eceb94241bd769a28d0422adb0e073ea140a9 /addrtoname.c | |
parent | 7780402e9f67ffe6b98274f16277c8db00d3a95f (diff) | |
download | tcpdump-5ae22f41a8e2152c8618227a0cc45b9de61a0f70.tar.gz |
Add a status exit code to the function ndo_error()
The status are defined in an enum in status-exit-codes.h.
Moreover:
Use ndo_error() instead of ndo_warning() for malloc() errors in print-esp.c.
Diffstat (limited to 'addrtoname.c')
-rw-r--r-- | addrtoname.c | 79 |
1 files changed, 47 insertions, 32 deletions
diff --git a/addrtoname.c b/addrtoname.c index f488dde0..d43daac8 100644 --- a/addrtoname.c +++ b/addrtoname.c @@ -125,7 +125,7 @@ /* * hash tables for whatever-to-name translations * - * ndo_error() called on strdup(3) failure + * ndo_error() called on strdup(3) failure with S_ERR_ND_MEM_ALLOC status */ #define HASHNAMESIZE 4096 @@ -319,8 +319,8 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap) p->name = strdup(hp->h_name); if (p->name == NULL) - (*ndo->ndo_error)(ndo, - "ipaddr_string: strdup(hp->h_name)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "ipaddr_string: strdup(hp->h_name)"); if (ndo->ndo_Nflag) { /* Remove domain qualifications */ dotp = strchr(p->name, '.'); @@ -332,7 +332,8 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap) } p->name = strdup(intoa(addr)); if (p->name == NULL) - (*ndo->ndo_error)(ndo, "ipaddr_string: strdup(intoa(addr))"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "ipaddr_string: strdup(intoa(addr))"); return (p->name); } @@ -381,8 +382,8 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap) p->name = strdup(hp->h_name); if (p->name == NULL) - (*ndo->ndo_error)(ndo, - "ip6addr_string: strdup(hp->h_name)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "ip6addr_string: strdup(hp->h_name)"); if (ndo->ndo_Nflag) { /* Remove domain qualifications */ dotp = strchr(p->name, '.'); @@ -395,7 +396,8 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap) cp = addrtostr6(ap, ntop_buf, sizeof(ntop_buf)); p->name = strdup(cp); if (p->name == NULL) - (*ndo->ndo_error)(ndo, "ip6addr_string: strdup(cp)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "ip6addr_string: strdup(cp)"); return (p->name); } @@ -429,7 +431,7 @@ lookup_emem(netdissect_options *ndo, const u_char *ep) tp->e_addr2 = k; tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); if (tp->e_nxt == NULL) - (*ndo->ndo_error)(ndo, "lookup_emem: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, "lookup_emem: calloc"); return tp; } @@ -474,13 +476,15 @@ lookup_bytestring(netdissect_options *ndo, const u_char *bs, tp->bs_bytes = (u_char *) calloc(1, nlen); if (tp->bs_bytes == NULL) - (*ndo->ndo_error)(ndo, "lookup_bytestring: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "lookup_bytestring: calloc"); memcpy(tp->bs_bytes, bs, nlen); tp->bs_nbytes = nlen; tp->bs_nxt = (struct bsnamemem *)calloc(1, sizeof(*tp)); if (tp->bs_nxt == NULL) - (*ndo->ndo_error)(ndo, "lookup_bytestring: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "lookup_bytestring: calloc"); return tp; } @@ -520,12 +524,12 @@ lookup_nsap(netdissect_options *ndo, const u_char *nsap, tp->e_addr2 = k; tp->e_nsap = (u_char *)malloc(nsap_length + 1); if (tp->e_nsap == NULL) - (*ndo->ndo_error)(ndo, "lookup_nsap: malloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, "lookup_nsap: malloc"); tp->e_nsap[0] = (u_char)nsap_length; /* guaranteed < ISONSAP_MAX_LENGTH */ memcpy((char *)&tp->e_nsap[1], (const char *)nsap, nsap_length); tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); if (tp->e_nxt == NULL) - (*ndo->ndo_error)(ndo, "lookup_nsap: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, "lookup_nsap: calloc"); return tp; } @@ -553,7 +557,7 @@ lookup_protoid(netdissect_options *ndo, const u_char *pi) tp->p_proto = j; tp->p_nxt = (struct protoidmem *)calloc(1, sizeof(*tp)); if (tp->p_nxt == NULL) - (*ndo->ndo_error)(ndo, "lookup_protoid: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, "lookup_protoid: calloc"); return tp; } @@ -577,8 +581,8 @@ etheraddr_string(netdissect_options *ndo, const u_char *ep) if (ether_ntohost(buf2, (const struct ether_addr *)ep) == 0) { tp->e_name = strdup(buf2); if (tp->e_name == NULL) - (*ndo->ndo_error)(ndo, - "etheraddr_string: strdup(buf2)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "etheraddr_string: strdup(buf2)"); return (tp->e_name); } } @@ -600,7 +604,8 @@ etheraddr_string(netdissect_options *ndo, const u_char *ep) *cp = '\0'; tp->e_name = strdup(buf); if (tp->e_name == NULL) - (*ndo->ndo_error)(ndo, "etheraddr_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "etheraddr_string: strdup(buf)"); return (tp->e_name); } @@ -629,7 +634,8 @@ le64addr_string(netdissect_options *ndo, const u_char *ep) tp->bs_name = strdup(buf); if (tp->bs_name == NULL) - (*ndo->ndo_error)(ndo, "le64addr_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "le64addr_string: strdup(buf)"); return (tp->bs_name); } @@ -657,7 +663,8 @@ linkaddr_string(netdissect_options *ndo, const u_char *ep, tp->bs_name = cp = (char *)malloc(len*3); if (tp->bs_name == NULL) - (*ndo->ndo_error)(ndo, "linkaddr_string: malloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "linkaddr_string: malloc"); *cp++ = hex[*ep >> 4]; *cp++ = hex[*ep++ & 0xf]; for (i = len-1; i > 0 ; --i) { @@ -693,7 +700,8 @@ etherproto_string(netdissect_options *ndo, u_short port) *cp++ = '\0'; tp->name = strdup(buf); if (tp->name == NULL) - (*ndo->ndo_error)(ndo, "etherproto_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "etherproto_string: strdup(buf)"); return (tp->name); } @@ -715,7 +723,8 @@ isonsap_string(netdissect_options *ndo, const u_char *nsap, tp->e_name = cp = (char *)malloc(sizeof("xx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xx")); if (cp == NULL) - (*ndo->ndo_error)(ndo, "isonsap_string: malloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "isonsap_string: malloc"); for (nsap_idx = 0; nsap_idx < nsap_length; nsap_idx++) { *cp++ = hex[*nsap >> 4]; @@ -746,7 +755,8 @@ tcpport_string(netdissect_options *ndo, u_short port) (void)nd_snprintf(buf, sizeof(buf), "%u", i); tp->name = strdup(buf); if (tp->name == NULL) - (*ndo->ndo_error)(ndo, "tcpport_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "tcpport_string: strdup(buf)"); return (tp->name); } @@ -767,7 +777,8 @@ udpport_string(netdissect_options *ndo, u_short port) (void)nd_snprintf(buf, sizeof(buf), "%u", i); tp->name = strdup(buf); if (tp->name == NULL) - (*ndo->ndo_error)(ndo, "udpport_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "udpport_string: strdup(buf)"); return (tp->name); } @@ -795,7 +806,8 @@ ipxsap_string(netdissect_options *ndo, u_short port) *cp++ = '\0'; tp->name = strdup(buf); if (tp->name == NULL) - (*ndo->ndo_error)(ndo, "ipxsap_string: strdup(buf)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "ipxsap_string: strdup(buf)"); return (tp->name); } @@ -825,7 +837,8 @@ init_servarray(netdissect_options *ndo) } else table->name = strdup(sv->s_name); if (table->name == NULL) - (*ndo->ndo_error)(ndo, "init_servarray: strdup"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "init_servarray: strdup"); table->addr = port; table->nxt = newhnamemem(ndo); @@ -911,8 +924,8 @@ init_protoidarray(netdissect_options *ndo) tp = lookup_protoid(ndo, protoid); tp->p_name = strdup(eproto_db[i].s); if (tp->p_name == NULL) - (*ndo->ndo_error)(ndo, - "init_protoidarray: strdup(eproto_db[i].s)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "init_protoidarray: strdup(eproto_db[i].s)"); } /* Hardwire some SNAP proto ID names */ for (pl = protoidlist; pl->name != NULL; ++pl) { @@ -965,8 +978,8 @@ init_etherarray(netdissect_options *ndo) tp = lookup_emem(ndo, ep->addr); tp->e_name = strdup(ep->name); if (tp->e_name == NULL) - (*ndo->ndo_error)(ndo, - "init_etherarray: strdup(ep->addr)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "init_etherarray: strdup(ep->addr)"); } (void)fclose(fp); } @@ -986,8 +999,8 @@ init_etherarray(netdissect_options *ndo) if (ether_ntohost(name, (const struct ether_addr *)el->addr) == 0) { tp->e_name = strdup(name); if (tp->e_name == NULL) - (*ndo->ndo_error)(ndo, - "init_etherarray: strdup(name)"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "init_etherarray: strdup(name)"); continue; } #endif @@ -1287,7 +1300,8 @@ newhnamemem(netdissect_options *ndo) num = 64; ptr = (struct hnamemem *)calloc(num, sizeof (*ptr)); if (ptr == NULL) - (*ndo->ndo_error)(ndo, "newhnamemem: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "newhnamemem: calloc"); } --num; p = ptr++; @@ -1306,7 +1320,8 @@ newh6namemem(netdissect_options *ndo) num = 64; ptr = (struct h6namemem *)calloc(num, sizeof (*ptr)); if (ptr == NULL) - (*ndo->ndo_error)(ndo, "newh6namemem: calloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, + "newh6namemem: calloc"); } --num; p = ptr++; |