@@ -47,7 +47,7 @@ SecretSchema BuildSchema(const char key_namespace[]) {
4747
4848UserSecureLinuxInternal::UserSecureLinuxInternal (const char * domain,
4949 const char * key_namespace)
50- : domain_(domain), key_namespace_(key_namespace) {
50+ : domain_(domain), key_namespace_(key_namespace), known_error_code_( 0 ) {
5151 storage_schema_ = BuildSchema (key_namespace_.c_str ());
5252}
5353
@@ -68,14 +68,8 @@ std::string UserSecureLinuxInternal::LoadUserData(const std::string& app_name) {
6868 /* key1= */ kAppNameKey ,
6969 /* value1= */ app_name.c_str (), /* key2= */ kStorageDomainKey ,
7070 /* value2= */ domain_.c_str (), nullptr );
71- if (error) {
72- LogWarning (" Secret lookup failed. Error %d: %s" , error->code ,
73- error->message );
74- g_error_free (error);
75- return empty_str;
76- }
7771
78- if (result == nullptr ) {
72+ if (CheckForError (&error, " lookup " ) || result == nullptr ) {
7973 return empty_str;
8074 }
8175 std::string str_result (result);
@@ -97,11 +91,7 @@ void UserSecureLinuxInternal::SaveUserData(const std::string& app_name,
9791 /* value1= */ app_name.c_str (),
9892 /* key2= */ kStorageDomainKey , /* value2= */ domain_.c_str (), nullptr );
9993
100- if (error) {
101- LogWarning (" Secret store failed. Error %d: %s" , error->code ,
102- error->message );
103- g_error_free (error);
104- }
94+ CheckForError (&error, " store" );
10595}
10696
10797void UserSecureLinuxInternal::DeleteUserData (const std::string& app_name) {
@@ -116,11 +106,7 @@ void UserSecureLinuxInternal::DeleteUserData(const std::string& app_name) {
116106 /* key2= */ kStorageDomainKey ,
117107 /* value2= */ domain_.c_str (), nullptr );
118108
119- if (error) {
120- LogWarning (" Secret clear failed. Error %d: %s" , error->code ,
121- error->message );
122- g_error_free (error);
123- }
109+ CheckForError (&error, " clear" );
124110}
125111
126112void UserSecureLinuxInternal::DeleteAllData () {
@@ -132,11 +118,20 @@ void UserSecureLinuxInternal::DeleteAllData() {
132118 /* error= */ &error,
133119 /* key2= */ kStorageDomainKey ,
134120 /* value2= */ domain_.c_str (), nullptr );
135- if (error) {
136- LogWarning (" Secret clear failed. Error %d: %s" , error->code ,
137- error->message );
138- g_error_free (error);
121+ CheckForError (&error, " clear" );
122+ }
123+
124+ bool UserSecureLinuxInternal::CheckForError (GError** error,
125+ const char * function_name) {
126+ if (error == nullptr || *error == nullptr ) return false ;
127+ if ((*error)->code != known_error_code_) {
128+ LogWarning (" Secret %s failed. Error %d: %s" , function_name, (*error)->code ,
129+ (*error)->message );
130+ known_error_code_ = (*error)->code ;
139131 }
132+ g_error_free (*error);
133+ *error = nullptr ;
134+ return true ;
140135}
141136
142137} // namespace secure
0 commit comments