aboutsummaryrefslogtreecommitdiff
path: root/pcap-pf.c
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2023-06-24 23:35:45 -0700
committerGuy Harris <gharris@sonic.net>2023-06-24 23:35:45 -0700
commit8f1f6fcbe4b4c17d965b42374a2f170452a93289 (patch)
tree52c8f4835f8ff0ff4c854f5e3c5757020b04caf2 /pcap-pf.c
parentd130479e5b2c024a70e1f7446a228eb19243114e (diff)
If we can't allocate a DLT_ list, fail.
Some code already was doing that (for example, pcap-bpf.c if fetching the DLT list with an ioctl), and, if you can't allocate a DLT_ list, which is usually pretty small, you may have other memory allocation problems later, so letting the program open an interface (and not get a correct list of all link-layer types supported) may not be worth it.
Diffstat (limited to 'pcap-pf.c')
-rw-r--r--pcap-pf.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/pcap-pf.c b/pcap-pf.c
index da08510d..2e231bec 100644
--- a/pcap-pf.c
+++ b/pcap-pf.c
@@ -404,14 +404,15 @@ pcap_activate_pf(pcap_t *p)
* Ethernet framing).
*/
p->dlt_list = (u_int *) malloc(sizeof(u_int) * 2);
- /*
- * If that fails, just leave the list empty.
- */
- if (p->dlt_list != NULL) {
- p->dlt_list[0] = DLT_EN10MB;
- p->dlt_list[1] = DLT_DOCSIS;
- p->dlt_count = 2;
+ if (p->dlt_list == NULL) {
+ pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
+ errno, "malloc");
+ err = PCAP_ERROR;
+ goto bad;
}
+ p->dlt_list[0] = DLT_EN10MB;
+ p->dlt_list[1] = DLT_DOCSIS;
+ p->dlt_count = 2;
break;
case ENDT_FDDI: