curl-library
[PATCH] ares: Fix some crashes when NULLs are sent to c-ares.
From: <greearb_at_candelatech.com>
Date: Wed, 6 Mar 2013 17:11:18 -0800
Date: Wed, 6 Mar 2013 17:11:18 -0800
From: Ben Greear <greearb_at_candelatech.com>
Generally, treat NULL as empty string or other zero
value configuration.
Signed-off-by: Ben Greear <greearb_at_candelatech.com>
--- ares_init.c | 16 ++++++++++++---- ares_options.c | 5 +++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ares_init.c b/ares_init.c index d23c1b0..e3f9e5a 100644 --- a/ares_init.c +++ b/ares_init.c @@ -1952,16 +1952,24 @@ void ares_set_local_ip4(ares_channel channel, unsigned int local_ip) void ares_set_local_ip6(ares_channel channel, const unsigned char* local_ip6) { - memcpy(&channel->local_ip6, local_ip6, sizeof(channel->local_ip6)); + if(local_ip6) + memcpy(&channel->local_ip6, local_ip6, sizeof(channel->local_ip6)); + else + memset(&channel->local_ip6, 0, sizeof(channel->local_ip6)); } /* local_dev_name should be null terminated. */ void ares_set_local_dev(ares_channel channel, const char* local_dev_name) { - strncpy(channel->local_dev_name, local_dev_name, - sizeof(channel->local_dev_name)); - channel->local_dev_name[sizeof(channel->local_dev_name) - 1] = 0; + if(local_dev_name) { + strncpy(channel->local_dev_name, local_dev_name, + sizeof(channel->local_dev_name)); + channel->local_dev_name[sizeof(channel->local_dev_name) - 1] = 0; + } + else { + channel->local_dev_name[0] = 0; + } } diff --git a/ares_options.c b/ares_options.c index 5466cb2..9abd27e 100644 --- a/ares_options.c +++ b/ares_options.c @@ -135,7 +135,7 @@ int ares_set_servers(ares_channel channel, int ares_set_servers_csv(ares_channel channel, const char* _csv) { - size_t i; + size_t i = 0; char* csv = NULL; char* ptr; char* start_host; @@ -151,7 +151,8 @@ int ares_set_servers_csv(ares_channel channel, ares__destroy_servers_state(channel); - i = strlen(_csv); + if (_csv) + i = strlen(_csv); if (i == 0) return ARES_SUCCESS; /* blank all servers */ -- 1.7.11.7 ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2013-03-07