Index: chrome/browser/password_manager/native_backend_libsecret.cc |
diff --git a/chrome/browser/password_manager/native_backend_libsecret.cc b/chrome/browser/password_manager/native_backend_libsecret.cc |
index 17051f9ccbf82d1de69850dfb255c26b2c3ffcc0..7cc94af040e41ea046b524cb3a4758dfdc7e0aff 100644 |
--- a/chrome/browser/password_manager/native_backend_libsecret.cc |
+++ b/chrome/browser/password_manager/native_backend_libsecret.cc |
@@ -19,6 +19,10 @@ using autofill::PasswordForm; |
using base::UTF8ToUTF16; |
using base::UTF16ToUTF8; |
+namespace { |
+const char kEmptyString[] = ""; |
+} |
+ |
typeof(&::secret_password_store_sync) |
LibsecretLoader::secret_password_store_sync; |
typeof(&::secret_service_search_sync) |
@@ -119,14 +123,17 @@ const SecretSchema kLibsecretSchema = { |
{"application", SECRET_SCHEMA_ATTRIBUTE_STRING}, |
{nullptr, SECRET_SCHEMA_ATTRIBUTE_STRING}}}; |
-char* GetStringFromAttributes(GHashTable* attrs, const char* keyname) { |
- return static_cast<char*>(g_hash_table_lookup(attrs, keyname)); |
+const char* GetStringFromAttributes(GHashTable* attrs, const char* keyname) { |
+ gpointer value = g_hash_table_lookup(attrs, keyname); |
+ return value ? static_cast<char*>(value) : kEmptyString; |
} |
uint32_t GetUintFromAttributes(GHashTable* attrs, const char* keyname) { |
- char* value = static_cast<char*>(g_hash_table_lookup(attrs, keyname)); |
+ gpointer value = g_hash_table_lookup(attrs, keyname); |
+ if (!value) |
+ return uint32_t(); |
uint32_t result; |
- bool value_ok = base::StringToUint(value, &result); |
+ bool value_ok = base::StringToUint(static_cast<char*>(value), &result); |
DCHECK(value_ok); |
return result; |
} |