Commit 8bc13818 authored by Simon McVittie's avatar Simon McVittie

fdpass test: Assert that we don't leak file descriptors

This version is for the dbus-1.12 branch, and doesn't rely on !153
or !120.

Reproduces: #294
Reproduces: CVE-2020-12049
Reproduces: GHSL-2020-057
Signed-off-by: Simon McVittie's avatarSimon McVittie <smcv@collabora.com>
parent 272d4842
......@@ -50,6 +50,14 @@
#include "test-utils-glib.h"
#ifdef DBUS_ENABLE_EMBEDDED_TESTS
#include <dbus/dbus-message-internal.h>
#else
typedef struct _DBusInitialFDs DBusInitialFDs;
#define _dbus_check_fdleaks_enter() NULL
#define _dbus_check_fdleaks_leave(fds) do {} while (0)
#endif
/* Arbitrary; included here to avoid relying on the default */
#define MAX_MESSAGE_UNIX_FDS 20
/* This test won't work on Linux unless this is true. */
......@@ -92,6 +100,7 @@ typedef struct {
GQueue messages;
int fd_before;
DBusInitialFDs *initial_fds;
} Fixture;
static void oom (const gchar *doing) G_GNUC_NORETURN;
......@@ -176,6 +185,8 @@ test_connect (Fixture *f,
if (f->skip)
return;
f->initial_fds = _dbus_check_fdleaks_enter ();
g_assert (f->left_server_conn == NULL);
g_assert (f->right_server_conn == NULL);
......@@ -871,6 +882,9 @@ teardown (Fixture *f,
if (f->fd_before >= 0 && close (f->fd_before) < 0)
g_error ("%s", g_strerror (errno));
#endif
if (f->initial_fds != NULL)
_dbus_check_fdleaks_leave (f->initial_fds);
}
int
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment