[gnome-software/wip/rancell/reviews-3-18] Prevent segfault due to indirectly freeing the OAuth credentials
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/reviews-3-18] Prevent segfault due to indirectly freeing the OAuth credentials
- Date: Mon, 25 Jan 2016 18:55:21 +0000 (UTC)
commit 5226127a5b8eaa209bb052d24d260594d3c6cfca
Author: William Hua <william hua canonical com>
Date: Mon Jan 25 13:54:02 2016 -0500
Prevent segfault due to indirectly freeing the OAuth credentials
src/plugins/gs-plugin-ubuntu-reviews.c | 51 ++++++++++++++++++-------------
1 files changed, 30 insertions(+), 21 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-reviews.c b/src/plugins/gs-plugin-ubuntu-reviews.c
index fe033ee..60a0142 100644
--- a/src/plugins/gs-plugin-ubuntu-reviews.c
+++ b/src/plugins/gs-plugin-ubuntu-reviews.c
@@ -839,11 +839,12 @@ set_package_review (GsPlugin *plugin,
GError **error)
{
GVariant *credentials;
- const gchar *consumer_key;
- const gchar *consumer_secret;
- const gchar *token;
- const gchar *token_secret;
CredentialsFoundInfo *info;
+ const gchar *consumer_key = NULL;
+ const gchar *consumer_secret = NULL;
+ const gchar *token = NULL;
+ const gchar *token_secret = NULL;
+ gboolean result;
/* Write review into database so we can easily access it */
// FIXME
@@ -871,10 +872,11 @@ set_package_review (GsPlugin *plugin,
!g_variant_lookup (credentials, "consumer_key", "&s", &consumer_key) ||
!g_variant_lookup (credentials, "consumer_secret", "&s", &consumer_secret) ||
!g_variant_lookup (credentials, "token", "&s", &token) ||
- !g_variant_lookup (credentials, "token_secret", "&s", &token_secret)) {
- if (credentials)
- g_variant_unref (credentials);
-
+ !g_variant_lookup (credentials, "token_secret", "&s", &token_secret) ||
+ !consumer_key[0] ||
+ !consumer_secret[0] ||
+ !token[0] ||
+ !token_secret[0]) {
info = g_new (CredentialsFoundInfo, 1);
info->plugin = g_object_ref (plugin);
info->review = g_object_ref (review);
@@ -885,23 +887,30 @@ set_package_review (GsPlugin *plugin,
G_CALLBACK (credentials_found),
info);
- return ubuntu_sso_credentials_call_login_sync (plugin->priv->credentials,
- "Ubuntu One",
- g_variant_new_array (G_VARIANT_TYPE ("{ss}"),
NULL, 0),
- NULL,
- error);
+ result = ubuntu_sso_credentials_call_login_sync (plugin->priv->credentials,
+ "Ubuntu One",
+ g_variant_new_array (G_VARIANT_TYPE
("{ss}"), NULL, 0),
+ NULL,
+ error);
+
+ if (credentials)
+ g_variant_unref (credentials);
+
+ return result;
}
+ result = send_review (plugin,
+ review,
+ package_name,
+ consumer_key,
+ consumer_secret,
+ token,
+ token_secret,
+ error);
+
g_variant_unref (credentials);
- return send_review (plugin,
- review,
- package_name,
- consumer_key,
- consumer_secret,
- token,
- token_secret,
- error);
+ return result;
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]