chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cgroups-agent: down-grade log level
[elogind.git]
/
src
/
core
/
execute.c
diff --git
a/src/core/execute.c
b/src/core/execute.c
index 3979f35988fa7f497d1b8a85c62ade978025859a..1e571da69c5e74d5a726f204933924cf308e9747 100644
(file)
--- a/
src/core/execute.c
+++ b/
src/core/execute.c
@@
-155,7
+155,7
@@
_pure_ static const char *tty_path(const ExecContext *context) {
return "/dev/console";
}
return "/dev/console";
}
-void exec_context_tty_reset(const ExecContext *context) {
+
static
void exec_context_tty_reset(const ExecContext *context) {
assert(context);
if (context->tty_vhangup)
assert(context);
if (context->tty_vhangup)
@@
-317,12
+317,12
@@
static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty
case EXEC_INPUT_TTY_FAIL: {
int fd, r;
case EXEC_INPUT_TTY_FAIL: {
int fd, r;
- if ((fd = acquire_terminal(
-
tty_path(context)
,
-
i == EXEC_INPUT_TTY_FAIL
,
-
i == EXEC_INPUT_TTY_FORCE
,
- false,
-
(usec_t) -1))
< 0)
+ fd = acquire_terminal(tty_path(context),
+
i == EXEC_INPUT_TTY_FAIL
,
+
i == EXEC_INPUT_TTY_FORCE
,
+
false
,
+ (usec_t) -1);
+
if (fd
< 0)
return fd;
if (fd != STDIN_FILENO) {
return fd;
if (fd != STDIN_FILENO) {
@@
-511,7
+511,7
@@
fail:
return r;
}
return r;
}
-_printf_
attr_
(1, 2) static int write_confirm_message(const char *format, ...) {
+_printf_(1, 2) static int write_confirm_message(const char *format, ...) {
int fd;
va_list ap;
int fd;
va_list ap;
@@
-748,6
+748,7
@@
static int setup_pam(
char **e = NULL;
bool close_session = false;
pid_t pam_pid = 0, parent_pid;
char **e = NULL;
bool close_session = false;
pid_t pam_pid = 0, parent_pid;
+ int flags = 0;
assert(name);
assert(user);
assert(name);
assert(user);
@@
-760,6
+761,9
@@
static int setup_pam(
* daemon. We do things this way to ensure that the main PID
* of the daemon is the one we initially fork()ed. */
* daemon. We do things this way to ensure that the main PID
* of the daemon is the one we initially fork()ed. */
+ if (log_get_max_level() < LOG_PRI(LOG_DEBUG))
+ flags |= PAM_SILENT;
+
pam_code = pam_start(name, user, &conv, &handle);
if (pam_code != PAM_SUCCESS) {
handle = NULL;
pam_code = pam_start(name, user, &conv, &handle);
if (pam_code != PAM_SUCCESS) {
handle = NULL;
@@
-772,11
+776,11
@@
static int setup_pam(
goto fail;
}
goto fail;
}
- pam_code = pam_acct_mgmt(handle,
PAM_SILENT
);
+ pam_code = pam_acct_mgmt(handle,
flags
);
if (pam_code != PAM_SUCCESS)
goto fail;
if (pam_code != PAM_SUCCESS)
goto fail;
- pam_code = pam_open_session(handle,
PAM_SILENT
);
+ pam_code = pam_open_session(handle,
flags
);
if (pam_code != PAM_SUCCESS)
goto fail;
if (pam_code != PAM_SUCCESS)
goto fail;
@@
-850,7
+854,7
@@
static int setup_pam(
/* If our parent died we'll end the session */
if (getppid() != parent_pid) {
/* If our parent died we'll end the session */
if (getppid() != parent_pid) {
- pam_code = pam_close_session(handle,
PAM_DATA_SILENT
);
+ pam_code = pam_close_session(handle,
flags
);
if (pam_code != PAM_SUCCESS)
goto child_finish;
}
if (pam_code != PAM_SUCCESS)
goto child_finish;
}
@@
-858,7
+862,7
@@
static int setup_pam(
r = 0;
child_finish:
r = 0;
child_finish:
- pam_end(handle, pam_code |
PAM_DATA_SILENT
);
+ pam_end(handle, pam_code |
flags
);
_exit(r);
}
_exit(r);
}
@@
-880,16
+884,19
@@
static int setup_pam(
return 0;
fail:
return 0;
fail:
- if (pam_code != PAM_SUCCESS)
+ if (pam_code != PAM_SUCCESS) {
+ log_error("PAM failed: %s", pam_strerror(handle, pam_code));
err = -EPERM; /* PAM errors do not map to errno */
err = -EPERM; /* PAM errors do not map to errno */
- else
+ } else {
+ log_error("PAM failed: %m");
err = -errno;
err = -errno;
+ }
if (handle) {
if (close_session)
if (handle) {
if (close_session)
- pam_code = pam_close_session(handle,
PAM_DATA_SILENT
);
+ pam_code = pam_close_session(handle,
flags
);
- pam_end(handle, pam_code |
PAM_DATA_SILENT
);
+ pam_end(handle, pam_code |
flags
);
}
strv_free(e);
}
strv_free(e);
@@
-1082,7
+1089,7
@@
int exec_spawn(ExecCommand *command,
free(line);
if (context->private_tmp && !context->tmp_dir && !context->var_tmp_dir) {
free(line);
if (context->private_tmp && !context->tmp_dir && !context->var_tmp_dir) {
- r = setup_tmpdirs(&context->tmp_dir, &context->var_tmp_dir);
+ r = setup_tmpdirs(
unit_id,
&context->tmp_dir, &context->var_tmp_dir);
if (r < 0)
return r;
}
if (r < 0)
return r;
}
@@
-1699,7
+1706,7
@@
void exec_command_free_list(ExecCommand *c) {
ExecCommand *i;
while ((i = c)) {
ExecCommand *i;
while ((i = c)) {
- LIST_REMOVE(
ExecCommand,
command, c, i);
+ LIST_REMOVE(command, c, i);
exec_command_done(i);
free(i);
}
exec_command_done(i);
free(i);
}
@@
-2187,8
+2194,8
@@
void exec_command_append_list(ExecCommand **l, ExecCommand *e) {
if (*l) {
/* It's kind of important, that we keep the order here */
if (*l) {
/* It's kind of important, that we keep the order here */
- LIST_FIND_TAIL(
ExecCommand,
command, *l, end);
- LIST_INSERT_AFTER(
ExecCommand,
command, *l, end, e);
+ LIST_FIND_TAIL(command, *l, end);
+ LIST_INSERT_AFTER(command, *l, end, e);
} else
*l = e;
}
} else
*l = e;
}
@@
-2207,7
+2214,8
@@
int exec_command_set(ExecCommand *c, const char *path, ...) {
if (!l)
return -ENOMEM;
if (!l)
return -ENOMEM;
- if (!(p = strdup(path))) {
+ p = strdup(path);
+ if (!p) {
strv_free(l);
return -ENOMEM;
}
strv_free(l);
return -ENOMEM;
}