What | Removed | Added |
---|---|---|
Resolution | --- | FIXED |
Status | NEW | RESOLVED |
Fix included in master branch: commit 59372771027ea98f59e42b2390263b077a71876c Author: Patrick Ohly <patrick.ohly@intel.com> Date: Thu Nov 3 00:50:26 2016 -0700 SignonAuthProvider: fix ref counting issue The account data was unreferenced once too often, or rather, a suitable ref count increase was missing. A debug build of glib detects that ("GLib: g_variant_unref: assertion 'value->ref_count > 0' failed"), but without that check the code might also crash. diff --git a/src/backends/signon/signon-accounts.cpp b/src/backends/signon/signon-accounts.cpp index 488a0e6..3ea9074 100644 --- a/src/backends/signon/signon-accounts.cpp +++ b/src/backends/signon/signon-accounts.cpp @@ -165,7 +165,7 @@ private: // so we have to use the "steal" variant to enable that assignment. GVariantStealCXX resultData; GErrorCXX gerror; - GVariantCXX sessionData(ag_auth_data_get_login_parameters(m_authData, extraOptions), TRANSFER_REF); + GVariantCXX sessionData(g_variant_ref_sink(ag_auth_data_get_login_parameters(m_authData, extraOptions)), TRANSFER_REF); const char *mechanism = ag_auth_data_get_mechanism(m_authData); PlainGStr buffer(g_variant_print(sessionData, true)); SE_LOG_DEBUG(NULL, "asking for authentication with method %s, mechanism %s and parameters %s",