Rebase webrtc/base with r6232:
cd webrtc/base
svn diff -r 6231:6232 http://webrtc.googlecode.com/svn/trunk/talk/base > 6232.diff
patch -p0 -i 6232.diff
BUG=3379
TBR=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/14599004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@6239 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/base/proxydetect.cc b/base/proxydetect.cc
index 7168886..7265f4f 100644
--- a/base/proxydetect.cc
+++ b/base/proxydetect.cc
@@ -621,27 +621,27 @@
if (ERROR_SUCCESS != result)
return false;
- wchar_t* value = NULL;
DWORD size, type;
+ bool success = false;
result = RegQueryValueEx(key, L"", 0, &type, NULL, &size);
- if (REG_SZ != type) {
- result = ERROR_ACCESS_DENIED; // Any error is fine
- } else if (ERROR_SUCCESS == result) {
- value = new wchar_t[size+1];
+ if (result == ERROR_SUCCESS && type == REG_SZ) {
+ wchar_t* value = new wchar_t[size+1];
BYTE* buffer = reinterpret_cast<BYTE*>(value);
result = RegQueryValueEx(key, L"", 0, &type, buffer, &size);
- }
- RegCloseKey(key);
-
- bool success = false;
- if (ERROR_SUCCESS == result) {
- value[size] = L'\0';
- for (size_t i = 0; i < size; ++i) {
- value[i] = tolowercase(value[i]);
+ if (result == ERROR_SUCCESS) {
+ // Size returned by RegQueryValueEx is in bytes, convert to number of
+ // wchar_t's.
+ size /= sizeof(value[0]);
+ value[size] = L'\0';
+ for (size_t i = 0; i < size; ++i) {
+ value[i] = tolowercase(value[i]);
+ }
+ success = (NULL != strstr(value, L"firefox.exe"));
}
- success = (NULL != strstr(value, L"firefox.exe"));
+ delete[] value;
}
- delete [] value;
+
+ RegCloseKey(key);
return success;
}