chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d3f2bdb
)
pam: work correctly if a seat is specified but not vtnr
author
Lennart Poettering
<lennart@poettering.net>
Fri, 13 Jan 2012 19:51:58 +0000
(20:51 +0100)
committer
Lennart Poettering
<lennart@poettering.net>
Fri, 13 Jan 2012 19:51:58 +0000
(20:51 +0100)
src/login/pam-module.c
patch
|
blob
|
history
diff --git
a/src/login/pam-module.c
b/src/login/pam-module.c
index 82594c30d5f543773804df22de4738ec0e324b9a..1c3a7437f80c96f3129b18c12c1f87130e78d6e6 100644
(file)
--- a/
src/login/pam-module.c
+++ b/
src/login/pam-module.c
@@
-260,7
+260,6
@@
static int get_seat_from_display(const char *display, const char **seat, uint32_
int v;
assert(display);
int v;
assert(display);
- assert(seat);
assert(vtnr);
/* We deduce the X11 socket from the display name, then use
assert(vtnr);
/* We deduce the X11 socket from the display name, then use
@@
-308,7
+307,8
@@
static int get_seat_from_display(const char *display, const char **seat, uint32_
else if (v == 0)
return -ENOENT;
else if (v == 0)
return -ENOENT;
- *seat = "seat0";
+ if (seat)
+ *seat = "seat0";
*vtnr = (uint32_t) v;
return 0;
*vtnr = (uint32_t) v;
return 0;
@@
-455,8
+455,12
@@
_public_ PAM_EXTERN int pam_sm_open_session(
if (!isempty(cvtnr))
safe_atou32(cvtnr, &vtnr);
if (!isempty(cvtnr))
safe_atou32(cvtnr, &vtnr);
- if (!isempty(display) && isempty(seat) && vtnr <= 0)
- get_seat_from_display(display, &seat, &vtnr);
+ if (!isempty(display) && vtnr <= 0) {
+ if (isempty(seat))
+ get_seat_from_display(handle, display, &seat, &vtnr);
+ else if (streq(seat, "seat0"))
+ get_seat_from_display(handle, display, NULL, &vtnr);
+ }
type = !isempty(display) ? "x11" :
!isempty(tty) ? "tty" : "unspecified";
type = !isempty(display) ? "x11" :
!isempty(tty) ? "tty" : "unspecified";