diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2013-01-22 00:27:59 +0900 |
---|---|---|
committer | Zhang zhengguang <zhengguang.zhang@intel.com> | 2013-07-01 11:05:23 +0800 |
commit | 936ec03de949ffa457b3ee778c369a9a4fc2e42f (patch) | |
tree | f0009984b0f5c5b9ee53edb3a4a166f126d815cb | |
parent | 2d63b07b78a1880d70975765880c5dd62e467663 (diff) | |
download | connman-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.c | 10 |
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; |