summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Merger (Role) <android-build-merger@google.com>2017-08-15 21:11:05 +0000
committerAndroid Build Merger (Role) <android-build-merger@google.com>2017-08-15 21:11:05 +0000
commited121860375a66b2915aff44a364a11628a3ad19 (patch)
tree07916eb815af05df68db29530f887eb75e52235e
parent328d1b448a782e9544004990cad7aaaaae58d364 (diff)
parent64cfebf14fb80d2645a9571a96f9f557447fdf84 (diff)
downloaddnsmasq-ed121860375a66b2915aff44a364a11628a3ad19.tar.gz
[automerger] Make dnsmasq more stable. am: f25df86146 am: 284fd86f87 am: 31b84030c5 am: d774c6e919 am: 52450e4dde am: 054c9876ff am: d766eb677e am: 31b103e7d6 am: eaa7e2e6fd am: b3621f9b4e am: 7f14f0ab03 am: 72d580fc91 am: 9bc6963a4a am: 879f5cce1d am: 64cfebf14f
Change-Id: I7d867d7cbf9b4f7957c87eda78241561e33075f1
-rwxr-xr-xsrc/rfc1035.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rfc1035.c b/src/rfc1035.c
index 8ae0bfa..265e4df 100755
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -48,7 +48,7 @@ static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
/* end marker */
{
/* check that there are the correct no of bytes after the name */
- if (!CHECK_LEN(header, p, plen, extrabytes))
+ if (!CHECK_LEN(header, p1 ? p1 : p, plen, extrabytes))
return 0;
if (isExtract)
@@ -1142,6 +1142,9 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
struct crec *crecp;
int nxdomain = 0, auth = 1, trunc = 0;
struct mx_srv_record *rec;
+
+ // Make sure we do not underflow here too.
+ if (qlen > (limit - ((char *)header))) return 0;
/* If there is an RFC2671 pseudoheader then it will be overwritten by
partial replies, so we have to do a dry run to see if we can answer