diff options
author | Miloslav Trmač <mitr@redhat.com> | 2014-07-01 20:00:48 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2015-06-18 22:20:53 +0200 |
commit | a97672540c66c03ed392fc072f0c682281f08989 (patch) | |
tree | e6ce7ae242aba398003e43bb3970a6abe624a74d | |
parent | 983e8ec37b0ec1cc5114cb9ca49cf558dedfb31e (diff) | |
download | polkit-a97672540c66c03ed392fc072f0c682281f08989.tar.gz |
Don't add extra NULL group to subject.groups
The NULL “terminator” of ‘groups’ was being passed to JavaScript. Drop
it, and simplify by leting set_property_strv use the GPtrArray directly
instead of the extra conversions “into” a strv and a completely dead
g_strv_length().
https://bugs.freedesktop.org/show_bug.cgi?id=69501
-rw-r--r-- | src/polkitbackend/polkitbackendjsauthority.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/polkitbackend/polkitbackendjsauthority.c b/src/polkitbackend/polkitbackendjsauthority.c index c7a29e0..efb07a9 100644 --- a/src/polkitbackend/polkitbackendjsauthority.c +++ b/src/polkitbackend/polkitbackendjsauthority.c @@ -659,26 +659,22 @@ static void set_property_strv (PolkitBackendJsAuthority *authority, JSObject *obj, const gchar *name, - const gchar *const *value, - gssize len) + GPtrArray *value) { jsval value_jsval; JSObject *array_object; jsval *jsvals; guint n; - if (len < 0) - len = g_strv_length ((gchar **) value); - - jsvals = g_new0 (jsval, len); - for (n = 0; n < len; n++) + jsvals = g_new0 (jsval, value->len); + for (n = 0; n < value->len; n++) { JSString *jsstr; - jsstr = JS_NewStringCopyZ (authority->priv->cx, value[n]); + jsstr = JS_NewStringCopyZ (authority->priv->cx, g_ptr_array_index(value, n)); jsvals[n] = STRING_TO_JSVAL (jsstr); } - array_object = JS_NewArrayObject (authority->priv->cx, (gint32) len, jsvals); + array_object = JS_NewArrayObject (authority->priv->cx, value->len, jsvals); value_jsval = OBJECT_TO_JSVAL (array_object); JS_SetProperty (authority->priv->cx, obj, name, &value_jsval); @@ -818,11 +814,9 @@ subject_to_jsval (PolkitBackendJsAuthority *authority, } } - g_ptr_array_add (groups, NULL); - set_property_int32 (authority, obj, "pid", pid); set_property_str (authority, obj, "user", user_name); - set_property_strv (authority, obj, "groups", (const gchar* const *) groups->pdata, groups->len); + set_property_strv (authority, obj, "groups", groups); set_property_str (authority, obj, "seat", seat_str); set_property_str (authority, obj, "session", session_str); set_property_bool (authority, obj, "local", subject_is_local); |