Blame SOURCES/0018-Add-a-test-for-session_info.patch

93d60d
From a77b09e5d77e5cf1d4fdd38d018ecf164cd01df9 Mon Sep 17 00:00:00 2001
93d60d
From: Frediano Ziglio <freddy77@gmail.com>
93d60d
Date: Tue, 20 Oct 2020 16:38:37 +0100
93d60d
Subject: [PATCH 10/10] Add a test for session_info
93d60d
93d60d
Test from Uri, integrated in test suite.
93d60d
93d60d
Signed-off-by: Uri Lublin <uril@redhat.com>
93d60d
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
93d60d
---
93d60d
 Makefile.am               | 30 ++++++++++++++++++++
93d60d
 tests/test-session-info.c | 58 +++++++++++++++++++++++++++++++++++++++
93d60d
 2 files changed, 88 insertions(+)
93d60d
 create mode 100644 tests/test-session-info.c
93d60d
93d60d
diff --git a/Makefile.am b/Makefile.am
93d60d
index 575ba52..f4c65b4 100644
93d60d
--- a/Makefile.am
93d60d
+++ b/Makefile.am
93d60d
@@ -109,13 +109,43 @@ src_spice_vdagentd_SOURCES =			\
93d60d
 	src/vdagentd/virtio-port.h		\
93d60d
 	$(NULL)
93d60d
 
93d60d
+tests_test_session_info_CFLAGS =		\
93d60d
+	$(DBUS_CFLAGS)				\
93d60d
+	$(LIBSYSTEMD_DAEMON_CFLAGS)		\
93d60d
+	$(LIBSYSTEMD_LOGIN_CFLAGS)		\
93d60d
+	$(SPICE_CFLAGS)				\
93d60d
+	$(GIO2_CFLAGS)				\
93d60d
+	-I$(srcdir)/src				\
93d60d
+	-I$(srcdir)/src/vdagentd		\
93d60d
+	-DUDSCS_NO_SERVER			\
93d60d
+	$(NULL)
93d60d
+
93d60d
+tests_test_session_info_LDADD =			\
93d60d
+	$(DBUS_LIBS)				\
93d60d
+	$(LIBSYSTEMD_DAEMON_LIBS)		\
93d60d
+	$(LIBSYSTEMD_LOGIN_LIBS)		\
93d60d
+	$(SPICE_LIBS)				\
93d60d
+	$(GIO2_LIBS)				\
93d60d
+	$(NULL)
93d60d
+
93d60d
+tests_test_session_info_SOURCES =		\
93d60d
+	$(common_sources)			\
93d60d
+	src/vdagentd/session-info.h		\
93d60d
+	tests/test-session-info.c		\
93d60d
+	$(NULL)
93d60d
+
93d60d
+check_PROGRAMS += tests/test-session-info
93d60d
+
93d60d
 if HAVE_CONSOLE_KIT
93d60d
 src_spice_vdagentd_SOURCES += src/vdagentd/console-kit.c
93d60d
+tests_test_session_info_SOURCES += src/vdagentd/console-kit.c
93d60d
 else
93d60d
 if HAVE_LIBSYSTEMD_LOGIN
93d60d
 src_spice_vdagentd_SOURCES += src/vdagentd/systemd-login.c
93d60d
+tests_test_session_info_SOURCES += src/vdagentd/systemd-login.c
93d60d
 else
93d60d
 src_spice_vdagentd_SOURCES += src/vdagentd/dummy-session-info.c
93d60d
+tests_test_session_info_SOURCES += src/vdagentd/dummy-session-info.c
93d60d
 endif
93d60d
 endif
93d60d
 
93d60d
diff --git a/tests/test-session-info.c b/tests/test-session-info.c
93d60d
new file mode 100644
93d60d
index 0000000..dae3ec6
93d60d
--- /dev/null
93d60d
+++ b/tests/test-session-info.c
93d60d
@@ -0,0 +1,58 @@
93d60d
+/*  test-session-info.c  - test session info
93d60d
+
93d60d
+    Copyright 2020 Red Hat, Inc.
93d60d
+
93d60d
+    This program is free software: you can redistribute it and/or modify
93d60d
+    it under the terms of the GNU General Public License as published by
93d60d
+    the Free Software Foundation, either version 3 of the License, or
93d60d
+    (at your option) any later version.
93d60d
+
93d60d
+    This program is distributed in the hope that it will be useful,
93d60d
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
93d60d
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
93d60d
+    GNU General Public License for more details.
93d60d
+
93d60d
+    You should have received a copy of the GNU General Public License
93d60d
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
93d60d
+*/
93d60d
+#include <config.h>
93d60d
+
93d60d
+#undef NDEBUG
93d60d
+#include <assert.h>
93d60d
+#include <stdio.h>
93d60d
+#include <stdlib.h>
93d60d
+#include <unistd.h>
93d60d
+
93d60d
+#include "session-info.h"
93d60d
+
93d60d
+int main(int argc, char *argv[])
93d60d
+{
93d60d
+    int pid, uid, ck_uid;
93d60d
+
93d60d
+    pid = (int)getpid();
93d60d
+
93d60d
+    struct session_info *session_info = session_info_create(1);
93d60d
+    if (session_info == NULL) {
93d60d
+        return 1;
93d60d
+    }
93d60d
+
93d60d
+    char *session = session_info_session_for_pid(session_info, pid);
93d60d
+    if (session == NULL) {
93d60d
+        session_info_destroy(session_info);
93d60d
+        return 2;
93d60d
+    }
93d60d
+    ck_uid = session_info_uid_for_session(session_info, session);
93d60d
+
93d60d
+    free(session);
93d60d
+    session_info_destroy(session_info);
93d60d
+
93d60d
+    uid = getuid();
93d60d
+    printf("MAIN: uid is %d, ck_uid is %d\n", uid, ck_uid);
93d60d
+
93d60d
+    if (uid != ck_uid) {
93d60d
+        fprintf(stderr, "MAIN: uid (%d) does not match console-kit uid %d\n", uid, ck_uid);
93d60d
+        return 3;
93d60d
+    }
93d60d
+
93d60d
+    return 0;
93d60d
+}
93d60d
-- 
93d60d
2.28.0
93d60d