diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 17:15:42 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 17:15:42 +0000 |
commit | bb268a6f7560ed68ff67bb162b1f528012164fbe (patch) | |
tree | 3eecb063a9daca8dcbc49e14c53fe4c71707e134 /net/base/dnsrr_resolver.cc | |
parent | 450d456279e6ac4b023a573843b504ee9f27f1aa (diff) | |
download | chromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.zip chromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.tar.gz chromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.tar.bz2 |
net: replicate r62288 in DnsRRResolver
When _res is uninitialized, res_nclose may end up closing fd 0.
Test whether it's initialized before closing.
Patch by Jim Deng.
TBR=evanm
Original review URL: http://codereview.chromium.org/3717002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62292 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/dnsrr_resolver.cc')
-rw-r--r-- | net/base/dnsrr_resolver.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/base/dnsrr_resolver.cc b/net/base/dnsrr_resolver.cc index cd63bc6..0a30d77 100644 --- a/net/base/dnsrr_resolver.cc +++ b/net/base/dnsrr_resolver.cc @@ -181,7 +181,11 @@ class RRResolverWorker { #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) if (!r && DnsReloadTimerHasExpired()) { - res_nclose(&_res); + // When there's no network connection, _res may not be initialized by + // getaddrinfo. Therefore, we call res_nclose only when there are ns + // entries. + if (_res.nscount > 0) + res_nclose(&_res); if (res_ninit(&_res) == 0) r = Do(); } |