summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-09-15 19:23:05 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-09-15 19:23:05 +0000
commit0b3a4a47254cd75aa88685926bdab102656df80a (patch)
tree2e29b5f8c53c80bbf310cf3b99166ef49a9fcc3d
parent61b542ef379106207b419360c7f2761208e9dfbf (diff)
parenta0f99f6177a862e7cc22669ad04b975f685bd402 (diff)
downloaddnsmasq-nougat-mr1.7-release.tar.gz
release-request-b6ec1e5a-8dd9-44a3-97f9-f374a706d9ac-for-git_nyc-mr1-security-g-release-4299435 snap-temp-L65100000103194273android-7.1.1_r57nougat-mr1.7-release
Change-Id: I3693e5214aefa7d06492b14993b76af329ea2246
-rwxr-xr-xsrc/rfc1035.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rfc1035.c b/src/rfc1035.c
index 8ae0bfa..e440e8a 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 > (size_t)(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