diff options
author | Michael Catanzaro <mcatanzaro@gnome.org> | 2020-02-27 15:28:50 -0600 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2020-02-27 15:39:34 -0600 |
commit | 771eb6711bcc86705db2b204f87fe59b49447f5a (patch) | |
tree | e77f3b85e86b8528bb1062369eec5ab6c16742bb | |
parent | f8d7718327bf0d2a35fb65a431366c71bc3978bc (diff) |
user: fix double-unref of GDBusMethodInvocation throughout
When we return FALSE, we're not saying "failure," we're actually
saying "unhandled." So in accounts-user-generated.c (generated by
gdbus-codegen), _accounts_user_skeleton_handle_method_call() will
call g_dbus_method_invocation_return_error(), which assumes
ownership, sends a D-Bus error to the peer, and unrefs the
GDBusMethodInvocation. Problem is, we've already done all of that
and doing so twice is unexpected and bad.
Spotted by Ray Strode in !51.
Fixes #86
-rw-r--r-- | src/user.c | 28 |
1 files changed, 14 insertions, 14 deletions
@@ -873,7 +873,7 @@ user_set_real_name (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -981,7 +981,7 @@ user_set_email (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1031,7 +1031,7 @@ user_set_language (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1079,7 +1079,7 @@ user_set_session (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1127,7 +1127,7 @@ user_set_session_type (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1175,7 +1175,7 @@ user_set_x_session (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1226,7 +1226,7 @@ user_get_password_expiration_policy (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1275,7 +1275,7 @@ user_set_location (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1553,7 +1553,7 @@ user_set_icon_file (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1743,7 +1743,7 @@ user_set_account_type (AccountsUser *auser, User *user = (User*)auser; if (account_type < 0 || account_type > ACCOUNT_TYPE_LAST) { throw_error (context, ERROR_FAILED, "unknown account type: %d", account_type); - return FALSE; + return TRUE; } daemon_local_check_auth (user->daemon, @@ -1848,12 +1848,12 @@ user_set_password_mode (AccountsUser *auser, if (mode < 0 || mode > PASSWORD_MODE_LAST) { throw_error (context, ERROR_FAILED, "unknown password mode: %d", mode); - return FALSE; + return TRUE; } if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) @@ -1933,7 +1933,7 @@ user_set_password (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } data = g_new (gchar *, 3); @@ -1992,7 +1992,7 @@ user_set_password_hint (AccountsUser *auser, if (!get_caller_uid (context, &uid)) { throw_error (context, ERROR_FAILED, "identifying caller failed"); - return FALSE; + return TRUE; } if (accounts_user_get_uid (ACCOUNTS_USER (user)) == (uid_t) uid) |