mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
systemd_pam: treat debug as debug=1 and parse all params
systemd_pam would ignore all params after the first invalid one. Instead ignore just this one, and parse the rest. There's just one now, but as a matter of principle ;) Also, allow debug as an alias for debug=1, and don't treat invalid debug= options as fatal.
This commit is contained in:
parent
f7262a9f28
commit
05a049cc44
@ -131,10 +131,11 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>debug=</option></term>
|
||||
<term><option>debug<optional>=</optional></option></term>
|
||||
|
||||
<listitem><para>Takes a boolean
|
||||
argument. If yes, the module will log
|
||||
<listitem><para>Takes an optional
|
||||
boolean argument. If yes or without
|
||||
the argument, the module will log
|
||||
debugging information as it
|
||||
operates.</para></listitem>
|
||||
</varlistentry>
|
||||
|
@ -51,30 +51,26 @@ static int parse_argv(pam_handle_t *handle,
|
||||
assert(argc >= 0);
|
||||
assert(argc == 0 || argv);
|
||||
|
||||
for (i = 0; i < (unsigned) argc; i++) {
|
||||
int k;
|
||||
|
||||
for (i = 0; i < (unsigned) argc; i++)
|
||||
if (startswith(argv[i], "class=")) {
|
||||
|
||||
if (class)
|
||||
*class = argv[i] + 6;
|
||||
|
||||
} else if (startswith(argv[i], "debug=")) {
|
||||
k = parse_boolean(argv[i] + 6);
|
||||
|
||||
if (k < 0) {
|
||||
pam_syslog(handle, LOG_ERR, "Failed to parse debug= argument.");
|
||||
return k;
|
||||
}
|
||||
|
||||
} else if (streq(argv[i], "debug")) {
|
||||
if (debug)
|
||||
*debug = true;
|
||||
|
||||
} else if (startswith(argv[i], "debug=")) {
|
||||
int k;
|
||||
|
||||
k = parse_boolean(argv[i] + 6);
|
||||
if (k < 0)
|
||||
pam_syslog(handle, LOG_WARNING, "Failed to parse debug= argument, ignoring.");
|
||||
else if (debug)
|
||||
*debug = k;
|
||||
|
||||
} else {
|
||||
} else
|
||||
pam_syslog(handle, LOG_WARNING, "Unknown parameter '%s', ignoring", argv[i]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -226,7 +222,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
|
||||
|
||||
pam_get_item(handle, PAM_SERVICE, (const void**) &service);
|
||||
if (streq_ptr(service, "systemd-user")) {
|
||||
char *p, *rt = NULL;
|
||||
_cleanup_free_ char *p = NULL, *rt = NULL;
|
||||
|
||||
if (asprintf(&p, "/run/systemd/users/%lu", (unsigned long) pw->pw_uid) < 0) {
|
||||
r = PAM_BUF_ERR;
|
||||
@ -236,18 +232,13 @@ _public_ PAM_EXTERN int pam_sm_open_session(
|
||||
r = parse_env_file(p, NEWLINE,
|
||||
"RUNTIME", &rt,
|
||||
NULL);
|
||||
free(p);
|
||||
|
||||
if (r < 0 && r != -ENOENT) {
|
||||
r = PAM_SESSION_ERR;
|
||||
free(rt);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (rt) {
|
||||
r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", rt, 0);
|
||||
free(rt);
|
||||
|
||||
if (r != PAM_SUCCESS) {
|
||||
pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
|
||||
goto finish;
|
||||
|
Loading…
Reference in New Issue
Block a user