summaryrefslogtreecommitdiffstats
path: root/chrome/utility
diff options
context:
space:
mode:
authorjwd@chromium.org <jwd@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-31 13:26:50 +0000
committerjwd@chromium.org <jwd@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-31 13:26:50 +0000
commitbb15e07ab1994282115b6f73f275f4097c852b09 (patch)
tree182d0d29edaf744253999c32e3a5934c4d54b0f3 /chrome/utility
parentdb79d6160d79b75ed0d4f9e1d7c180f4e8379978 (diff)
downloadchromium_src-bb15e07ab1994282115b6f73f275f4097c852b09.zip
chromium_src-bb15e07ab1994282115b6f73f275f4097c852b09.tar.gz
chromium_src-bb15e07ab1994282115b6f73f275f4097c852b09.tar.bz2
Revert 214661 "Bugfix: LocalDomainResolver double-calls its call..."
Reverting because it seems to be causing an ASAN issue on chromeos asan and linux asan bots. Sample output: ==13335==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000013839274 at pc 0xb6218b9 bp 0x7fff0f6cc230 sp 0x7fff0f6cc228 READ of size 53 at 0x000013839274 thread T0 #0 0xb6218b8 in net::MockMDnsSocketFactory::SimulateReceive(char const*, int) /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../net/dns/mock_mdns_socket_factory.cc:92:0 #1 0x5defa8d in local_discovery::(anonymous namespace)::LocalDomainResolverTest_ResolveDomainPreferAFromCache_Test::TestBody() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../chrome/utility/local_discovery/local_domain_resolver_unittest.cc:171:0 #2 0x9d10f67 in testing::Test::Run() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:2067:0 #3 0x9d131ac in testing::TestInfo::Run() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:2244:0 #4 0x9d140d2 in testing::TestCase::Run() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:2351:0 #5 0x9d213b5 in testing::internal::UnitTestImpl::RunAllTests() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:4177:0 #6 0x9d208bc in impl /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:2051:0 #7 0x9d208bc in testing::UnitTest::Run() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../testing/gtest/src/gtest.cc:3810:0 #8 0xc293a76 in base::TestSuite::Run() /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../base/test/test_suite.cc:167:0 #9 0xab2a164 in main /mnt/data/b/build/slave/Linux_Chromium_OS_ASAN_Builder/build/src/out/Release/../../chrome/test/base/run_all_unittests.cc:9:0 #10 0x7f3e7254376c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 #11 0x493d1c in _start ??:0 0x000013839274 is located 44 bytes to the left of global variable '.str11' from '../../chrome/utility/local_discovery/local_domain_resolver_unittest.cc' (0x138392a0) of size 14 '.str11' is ascii string 'myhello.local' 0x000013839274 is located 11 bytes to the right of global variable 'local_discovery::(anonymous namespace)::kSamplePacketA' from '../../chrome/utility/local_discovery/local_domain_resolver_unittest.cc' (0x13839240) of size 41 Shadow bytes around the buggy address: 0x0000826ff1f0: 00 00 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 0x0000826ff200: 00 00 00 00 00 02 f9 f9 f9 f9 f9 f9 00 00 00 00 0x0000826ff210: 00 00 00 00 00 00 00 00 00 00 00 f9 f9 f9 f9 f9 0x0000826ff220: 00 07 f9 f9 f9 f9 f9 f9 00 00 02 f9 f9 f9 f9 f9 0x0000826ff230: 00 00 01 f9 f9 f9 f9 f9 00 00 02 f9 f9 f9 f9 f9 =>0x0000826ff240: 00 00 00 06 f9 f9 f9 f9 00 00 00 00 00 01[f9]f9 0x0000826ff250: f9 f9 f9 f9 00 06 f9 f9 f9 f9 f9 f9 00 f9 f9 f9 0x0000826ff260: f9 f9 f9 f9 00 00 00 00 00 00 00 00 07 f9 f9 f9 0x0000826ff270: f9 f9 f9 f9 06 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 0x0000826ff280: 00 01 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 f9 0x0000826ff290: f9 f9 f9 f9 00 00 00 06 f9 f9 f9 f9 00 00 03 f9 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack partial redzone: f4 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 ASan internal: fe ==13335==ABORTING Failed tests: LocalDomainResolverTest.ResolveDomainPreferAFromCache > Bugfix: LocalDomainResolver double-calls its callback > > LocalDomainResolver double-callback if both A and AAAA records are > present. Fix to check if callback has been called before starting the second > transaction. > > BUG= > > Review URL: https://chromiumcodereview.appspot.com/21014008 TBR=noamsml@chromium.org Review URL: https://codereview.chromium.org/21070003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214704 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/utility')
-rw-r--r--chrome/utility/local_discovery/local_domain_resolver_unittest.cc16
-rw-r--r--chrome/utility/local_discovery/service_discovery_client_impl.cc17
2 files changed, 5 insertions, 28 deletions
diff --git a/chrome/utility/local_discovery/local_domain_resolver_unittest.cc b/chrome/utility/local_discovery/local_domain_resolver_unittest.cc
index fe1cebf..c1fd51c 100644
--- a/chrome/utility/local_discovery/local_domain_resolver_unittest.cc
+++ b/chrome/utility/local_discovery/local_domain_resolver_unittest.cc
@@ -167,22 +167,6 @@ TEST_F(LocalDomainResolverTest, ResolveDomainNone) {
RunFor(base::TimeDelta::FromSeconds(4));
}
-TEST_F(LocalDomainResolverTest, ResolveDomainPreferAFromCache) {
- socket_factory_->SimulateReceive(
- kSamplePacketA, sizeof(kSamplePacketAAAA));
- socket_factory_->SimulateReceive(
- kSamplePacketA, sizeof(kSamplePacketA));
-
- LocalDomainResolverImpl resolver(
- "myhello.local", net::ADDRESS_FAMILY_UNSPECIFIED,
- base::Bind(&LocalDomainResolverTest::AddressCallback,
- base::Unretained(this)), &mdns_client_);
-
- EXPECT_CALL(*this, AddressCallbackInternal(true, "1.2.3.4"));
-
- resolver.Start();
-}
-
} // namespace
} // namespace local_discovery
diff --git a/chrome/utility/local_discovery/service_discovery_client_impl.cc b/chrome/utility/local_discovery/service_discovery_client_impl.cc
index 1df586d..524f176 100644
--- a/chrome/utility/local_discovery/service_discovery_client_impl.cc
+++ b/chrome/utility/local_discovery/service_discovery_client_impl.cc
@@ -406,14 +406,10 @@ void LocalDomainResolverImpl::Start() {
transaction_a_->Start();
}
- // Callback may have finished syncrhonously during |transaction_a_->Start()|,
- // check to make sure it hasn't before starting |transaction_aaaa_|.
- if (!callback_.is_null()) {
- if (address_family_ == net::ADDRESS_FAMILY_IPV6 ||
- address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) {
- transaction_aaaa_ = CreateTransaction(net::dns_protocol::kTypeAAAA);
- transaction_aaaa_->Start();
- }
+ if (address_family_ == net::ADDRESS_FAMILY_IPV6 ||
+ address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) {
+ transaction_aaaa_ = CreateTransaction(net::dns_protocol::kTypeAAAA);
+ transaction_aaaa_->Start();
}
}
@@ -453,10 +449,7 @@ void LocalDomainResolverImpl::OnTransactionComplete(
}
}
- if (!callback_.is_null()) {
- callback_.Run(result == net::MDnsTransaction::RESULT_RECORD, address);
- callback_.Reset();
- }
+ callback_.Run(result == net::MDnsTransaction::RESULT_RECORD, address);
}
} // namespace local_discovery