From 22d3f33687247bb9de9ee4d81f32a7c0ce434bc9 Mon Sep 17 00:00:00 2001 From: Zxilly Date: Thu, 6 Mar 2025 16:44:08 +0800 Subject: [PATCH] fix: add more guard --- src/handler.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/handler.c b/src/handler.c index a50e884..26aba5f 100644 --- a/src/handler.c +++ b/src/handler.c @@ -289,10 +289,22 @@ void handle_packet(const struct nf_queue *queue, const struct nf_packet *pkt) { char msg[300]; if (type == IPV4) { syslog(LOG_WARNING, "Failed to set ipv4 transport header."); - nfq_ip_snprintf(msg, sizeof(msg), nfq_ip_get_hdr(pkt_buff)); + const __auto_type ip_hdr = nfq_ip_get_hdr(pkt_buff); + if (ip_hdr != NULL) { + nfq_ip_snprintf(msg, sizeof(msg), ip_hdr); + } else { + syslog(LOG_WARNING, "Failed to get ipv4 ip header"); + goto end; + } } else { syslog(LOG_WARNING, "Failed to set ipv6 transport header."); - nfq_ip6_snprintf(msg, sizeof(msg), nfq_ip6_get_hdr(pkt_buff)); + const __auto_type ip_hdr = nfq_ip6_get_hdr(pkt_buff); + if (ip_hdr != NULL) { + nfq_ip6_snprintf(msg, sizeof(msg), ip_hdr); + } else { + syslog(LOG_WARNING, "Failed to get ipv6 ip header"); + goto end; + } } syslog(LOG_WARNING, "Header: %s", msg); goto end; @@ -392,9 +404,7 @@ void handle_packet(const struct nf_queue *queue, const struct nf_packet *pkt) { send_verdict(queue, pkt, get_next_mark(pkt, has_ua), pkt_buff); end: - if (pkt->payload != NULL) { - free(pkt->payload); - } + free(pkt->payload); if (pkt_buff != NULL) { pktb_free(pkt_buff); }