[glib/1983-fix-fake-document-portal] tests: Fix callback arguments in fake-document-portal
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/1983-fix-fake-document-portal] tests: Fix callback arguments in fake-document-portal
- Date: Tue, 7 Jan 2020 11:22:30 +0000 (UTC)
commit 7d0a1c5c58fdcd731b3b53a8729b7ef0e2b5b8bc
Author: Philip Withnall <withnall endlessm com>
Date: Tue Jan 7 11:10:05 2020 +0000
tests: Fix callback arguments in fake-document-portal
They didn’t match the prototype generated by `gdbus-codegen`, which
meant that the FD list was being iterated incorrectly. Secondly, the
document ID list returned by the method was not NULL terminated, which
could lead to reading off the end of the list.
Somehow, neither of these bugs caused problems on Linux, but they did
cause problems on FreeBSD.
Signed-off-by: Philip Withnall <withnall endlessm com>
Fixes: #1983
gio/tests/fake-document-portal.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/gio/tests/fake-document-portal.c b/gio/tests/fake-document-portal.c
index bb2b4e95d..c9bb7950b 100644
--- a/gio/tests/fake-document-portal.c
+++ b/gio/tests/fake-document-portal.c
@@ -20,6 +20,10 @@
/* A stub implementation of xdg-document-portal covering enough to
* support g_document_portal_add_documents */
+#include <glib.h>
+#include <gio/gio.h>
+#include <gio/gunixfdlist.h>
+
#include "fake-document-portal-generated.h"
static gboolean
@@ -36,18 +40,22 @@ on_handle_get_mount_point (FakeDocuments *object,
static gboolean
on_handle_add_full (FakeDocuments *object,
GDBusMethodInvocation *invocation,
- GVariant *o_path_fds,
+ GUnixFDList *o_path_fds,
guint flags,
const gchar *app_id,
- const gchar *permissions,
+ const gchar * const *permissions,
gpointer user_data)
{
const gchar **doc_ids = NULL;
GVariant *extra_out = NULL;
gsize length, i;
- length = g_variant_get_size (o_path_fds);
- doc_ids = g_new0 (const gchar *, length);
+ if (o_path_fds != NULL)
+ length = g_unix_fd_list_get_length (o_path_fds);
+ else
+ length = 0;
+
+ doc_ids = g_new0 (const gchar *, length + 1 /* NULL terminator */);
for (i = 0; i < length; i++)
{
doc_ids[i] = "document-id";
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]