chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-login: add calls that retrieve credentials of peers connected to AF_UNIX peers
[elogind.git]
/
src
/
login
/
test-login.c
diff --git
a/src/login/test-login.c
b/src/login/test-login.c
index 228ddb293381eed43d875a0787d90862e9aceee2..2ab083bb71960b447acda01b082fdd3a67fb72ae 100644
(file)
--- a/
src/login/test-login.c
+++ b/
src/login/test-login.c
@@
-28,9
+28,11
@@
#include "strv.h"
static void test_login(void) {
#include "strv.h"
static void test_login(void) {
+ _cleanup_close_pipe_ int pair[2] = { -1, -1 };
+ _cleanup_free_ char *pp = NULL, *qq = NULL;
int r, k;
uid_t u, u2;
int r, k;
uid_t u, u2;
- char *seat, *type, *class, *display;
+ char *seat, *type, *class, *display
, *remote_user, *remote_host
;
char *session;
char *state;
char *session2;
char *session;
char *state;
char *session2;
@@
-39,7
+41,7
@@
static void test_login(void) {
uid_t *uids;
unsigned n;
struct pollfd pollfd;
uid_t *uids;
unsigned n;
struct pollfd pollfd;
- sd_login_monitor *m;
+ sd_login_monitor *m
= NULL
;
assert_se(sd_pid_get_session(0, &session) == 0);
printf("session = %s\n", session);
assert_se(sd_pid_get_session(0, &session) == 0);
printf("session = %s\n", session);
@@
-47,6
+49,11
@@
static void test_login(void) {
assert_se(sd_pid_get_owner_uid(0, &u2) == 0);
printf("user = %lu\n", (unsigned long) u2);
assert_se(sd_pid_get_owner_uid(0, &u2) == 0);
printf("user = %lu\n", (unsigned long) u2);
+ assert_se(socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == 0);
+ sd_peer_get_session(pair[0], &pp);
+ sd_peer_get_session(pair[1], &qq);
+ assert_se(streq_ptr(pp, qq));
+
r = sd_uid_get_sessions(u2, false, &sessions);
assert_se(r >= 0);
assert_se(r == (int) strv_length(sessions));
r = sd_uid_get_sessions(u2, false, &sessions);
assert_se(r >= 0);
assert_se(r == (int) strv_length(sessions));
@@
-71,6
+78,10
@@
static void test_login(void) {
assert_se(r >= 0);
printf("active = %s\n", yes_no(r));
assert_se(r >= 0);
printf("active = %s\n", yes_no(r));
+ r = sd_session_is_remote(session);
+ assert_se(r >= 0);
+ printf("remote = %s\n", yes_no(r));
+
r = sd_session_get_state(session, &state);
assert_se(r >= 0);
printf("state = %s\n", state);
r = sd_session_get_state(session, &state);
assert_se(r >= 0);
printf("state = %s\n", state);
@@
-92,6
+103,14
@@
static void test_login(void) {
printf("display = %s\n", display);
free(display);
printf("display = %s\n", display);
free(display);
+ assert_se(sd_session_get_remote_user(session, &remote_user) >= 0);
+ printf("remote_user = %s\n", remote_user);
+ free(remote_user);
+
+ assert_se(sd_session_get_remote_host(session, &remote_host) >= 0);
+ printf("remote_host = %s\n", remote_host);
+ free(remote_host);
+
assert_se(sd_session_get_seat(session, &seat) >= 0);
printf("seat = %s\n", seat);
assert_se(sd_session_get_seat(session, &seat) >= 0);
printf("seat = %s\n", seat);