diff options
author | Simon Kelley <simon@thekelleys.org.uk> | 2023-05-01 23:06:29 +0100 |
---|---|---|
committer | Simon Kelley <simon@thekelleys.org.uk> | 2023-05-01 23:06:29 +0100 |
commit | 1d6fe0ea84689a84c16dfee68b5e2700a62fc892 (patch) | |
tree | 654bd01eb9001310e00c80ca4d6a7a116baa38a5 | |
parent | d774add784d01c8346b271e8fb5cbedc44d7ed08 (diff) | |
download | dnsmasq-1d6fe0ea84689a84c16dfee68b5e2700a62fc892.tar.gz |
-rw-r--r-- | src/edns0.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/edns0.c b/src/edns0.c index 7f7d5d8..800c51f 100644 --- a/src/edns0.c +++ b/src/edns0.c @@ -191,16 +191,13 @@ size_t add_pseudoheader(struct dns_header *header, size_t plen, unsigned char *l if (!(p = skip_questions(header, plen)) || !(p = skip_section(p, ntohs(header->ancount) + ntohs(header->nscount) + ntohs(header->arcount), - header, plen))) - { - free(buff); - return plen; - } - if (p + 11 > limit) - { - free(buff); - return plen; /* Too big */ - } + header, plen)) || + p + 11 > limit) + { + free(buff); + return plen; /* bad packet */ + } + *p++ = 0; /* empty name */ PUTSHORT(T_OPT, p); PUTSHORT(udp_sz, p); /* max packet length, 512 if not given in EDNS0 header */ |