From: Jaehyun Kim <[email protected]>

Invalid buffer details while parsing DNS rsp data

Change-Id: I17b3ccf29eef01bde36ea4b852d14897014d8155
Signed-off-by: Zhang zhengguang <[email protected]>
---
 gweb/gresolv.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gweb/gresolv.c b/gweb/gresolv.c
index 5230bca..b8135ad 100644
--- a/gweb/gresolv.c
+++ b/gweb/gresolv.c
@@ -665,7 +665,8 @@ static void parse_response(struct resolv_nameserver 
*nameserver,
 
        debug(resolv, "response from %s", nameserver->address);
 
-       ns_initparse(buf, len, &msg);
+       if (ns_initparse(buf, len, &msg) == -1)
+               return;
 
        list = g_queue_find_custom(resolv->query_queue,
                        GUINT_TO_POINTER(ns_msg_id(msg)), compare_query_msgid);
@@ -713,7 +714,8 @@ static void parse_response(struct resolv_nameserver 
*nameserver,
                lookup->ipv4_status = status;
 
        for (i = 0; i < count; i++) {
-               ns_parserr(&msg, ns_s_an, i, &rr);
+               if (ns_parserr(&msg, ns_s_an, i, &rr) == -1)
+                       continue;
 
                if (ns_rr_class(rr) != ns_c_in)
                        continue;
-- 
1.7.9.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to