summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Gorski2026-02-06 20:16:49 +0000
committerJonas Gorski2026-02-07 12:37:55 +0000
commita52cdb354d13c179150d2ba26f9f8a51d418b43d (patch)
tree0d8ea74479036bb32c9143b217585dacf86bbb25
parentb798c24205b5572cd8f2b79f3ef5857bb5de3180 (diff)
downloadmdnsd-master.tar.gz
dns: validate IPv4 record addressesHEADmaster
Ensure the IPv4 PTR address contains exactly four numbers, and no excess characters. This avoids leaving ip1 potentially uninitialized for shorter prefixes. Fixes: 2b28094 ("dns: add support for reverse address mapping queries") Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
-rw-r--r--dns.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/dns.c b/dns.c
index 08515f6..6e7ec15 100644
--- a/dns.c
+++ b/dns.c
@@ -475,9 +475,13 @@ match_ipv6_addresses(char *reverse_ip, struct in6_addr *intf_ip)
static int
match_ip_addresses(char *reverse_ip, char *intf_ip)
{
- int ip1[4], ip2[4];
+ int ip1[4], ip2[4], res;
+ char c;
+
+ res = sscanf(reverse_ip, "%d.%d.%d.%d%c", &ip1[3], &ip1[2], &ip1[1], &ip1[0], &c);
+ if (res != 4)
+ return 0;
- sscanf(reverse_ip, "%d.%d.%d.%d", &ip1[3], &ip1[2], &ip1[1], &ip1[0]);
sscanf(intf_ip, "%d.%d.%d.%d", &ip2[0], &ip2[1], &ip2[2], &ip2[3]);
int i;