summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2013-01-22 00:27:59 +0900
committerZhang zhengguang <zhengguang.zhang@intel.com>2013-07-01 11:05:23 +0800
commit936ec03de949ffa457b3ee778c369a9a4fc2e42f (patch)
treef0009984b0f5c5b9ee53edb3a4a166f126d815cb
parent2d63b07b78a1880d70975765880c5dd62e467663 (diff)
downloadconnman-936ec03de949ffa457b3ee778c369a9a4fc2e42f.tar.gz
connman-936ec03de949ffa457b3ee778c369a9a4fc2e42f.tar.bz2
connman-936ec03de949ffa457b3ee778c369a9a4fc2e42f.zip
Add safe checks to validate DNS buffer
Invalid buffer details while parsing DNS rsp data
-rw-r--r--gweb/gresolv.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gweb/gresolv.c b/gweb/gresolv.c
index 864d2adb..74467f2e 100644
--- a/gweb/gresolv.c
+++ b/gweb/gresolv.c
@@ -665,7 +665,12 @@ static void parse_response(struct resolv_nameserver *nameserver,
debug(resolv, "response from %s", nameserver->address);
+#if defined TIZEN_EXT
+ if (ns_initparse(buf, len, &msg) == -1)
+ return;
+#else
ns_initparse(buf, len, &msg);
+#endif
list = g_queue_find_custom(resolv->query_queue,
GUINT_TO_POINTER(ns_msg_id(msg)), compare_query_msgid);
@@ -713,7 +718,12 @@ static void parse_response(struct resolv_nameserver *nameserver,
lookup->ipv4_status = status;
for (i = 0; i < count; i++) {
+#if defined TIZEN_EXT
+ if (ns_parserr(&msg, ns_s_an, i, &rr) == -1)
+ continue;
+#else
ns_parserr(&msg, ns_s_an, i, &rr);
+#endif
if (ns_rr_class(rr) != ns_c_in)
continue;