1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-31 14:50:15 +03:00

ask-password: req must be non-NULL

After #35074, the parameter 'req' must be non-NULL.

Fixes CID#1586101, CID#1586102, and CID#1586103.
This commit is contained in:
Yu Watanabe 2025-01-07 19:28:15 +09:00 committed by Lennart Poettering
parent 414fe9629c
commit 05db3fe7f9

View File

@ -319,12 +319,13 @@ int ask_password_plymouth(
char buffer[LINE_MAX];
size_t p = 0;
assert(req);
assert(ret);
if (FLAGS_SET(flags, ASK_PASSWORD_HEADLESS))
return -ENOEXEC;
const char *message = req && req->message ? req->message : "Password:";
const char *message = req->message ?: "Password:";
if (req->flag_file) {
inotify_fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK);
@ -492,6 +493,7 @@ int ask_password_tty(
size_t p = 0, codepoint = 0;
int r;
assert(req);
assert(ret);
if (FLAGS_SET(flags, ASK_PASSWORD_HEADLESS))
@ -500,8 +502,8 @@ int ask_password_tty(
if (FLAGS_SET(flags, ASK_PASSWORD_NO_TTY))
return -EUNATCH;
const char *message = req && req->message ? req->message : "Password:";
const char *keyring = req ? req->keyring : NULL;
const char *message = req->message ?: "Password:";
const char *keyring = req->keyring;
if (!FLAGS_SET(flags, ASK_PASSWORD_HIDE_EMOJI) && emoji_enabled())
message = strjoina(special_glyph(SPECIAL_GLYPH_LOCK_AND_KEY), " ", message);
@ -514,7 +516,7 @@ int ask_password_tty(
if (req->flag_file)
if (inotify_add_watch(inotify_fd, req->flag_file, IN_ATTRIB /* for the link count */) < 0)
return -errno;
if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED) && req && keyring) {
if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED) && keyring) {
r = ask_password_keyring(req, flags, ret);
if (r >= 0)
return 0;
@ -847,6 +849,7 @@ int ask_password_agent(
sigset_t mask, oldmask;
int r;
assert(req);
assert(ret);
if (FLAGS_SET(flags, ASK_PASSWORD_HEADLESS))
@ -878,7 +881,7 @@ int ask_password_agent(
goto finish;
}
if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED) && req && req->keyring) {
if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED) && req->keyring) {
r = ask_password_keyring(req, flags, ret);
if (r >= 0) {
r = 0;
@ -933,16 +936,14 @@ int ask_password_agent(
req->until,
FLAGS_SET(flags, ASK_PASSWORD_SILENT));
if (req) {
if (req->message)
fprintf(f, "Message=%s\n", req->message);
if (req->message)
fprintf(f, "Message=%s\n", req->message);
if (req->icon)
fprintf(f, "Icon=%s\n", req->icon);
if (req->icon)
fprintf(f, "Icon=%s\n", req->icon);
if (req->id)
fprintf(f, "Id=%s\n", req->id);
}
if (req->id)
fprintf(f, "Id=%s\n", req->id);
if (fchmod(fileno(f), 0644) < 0) {
r = -errno;
@ -1021,7 +1022,7 @@ int ask_password_agent(
if (inotify_fd >= 0 && pollfd[inotify_idx].revents != 0) {
(void) flush_fd(inotify_fd);
if (req && req->keyring) {
if (req->keyring) {
r = ask_password_keyring(req, flags, ret);
if (r >= 0) {
r = 0;
@ -1112,7 +1113,7 @@ int ask_password_agent(
log_debug("Invalid packet");
}
if (req && req->keyring)
if (req->keyring)
(void) add_to_keyring_and_log(req->keyring, flags, l);
*ret = TAKE_PTR(l);
@ -1163,6 +1164,7 @@ int ask_password_auto(
int r;
assert(req);
assert(ret);
/* Returns the following well-known errors:
@ -1176,14 +1178,14 @@ int ask_password_auto(
* -ECONNRESET a POLLHUP has been seen on the specified hup_fd
*/
if (!FLAGS_SET(flags, ASK_PASSWORD_NO_CREDENTIAL) && req && req->credential) {
if (!FLAGS_SET(flags, ASK_PASSWORD_NO_CREDENTIAL) && req->credential) {
r = ask_password_credential(req, flags, ret);
if (r != -ENOKEY)
return r;
}
if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED) &&
req && req->keyring &&
req->keyring &&
(FLAGS_SET(flags, ASK_PASSWORD_NO_TTY) || !isatty_safe(STDIN_FILENO)) &&
FLAGS_SET(flags, ASK_PASSWORD_NO_AGENT)) {
r = ask_password_keyring(req, flags, ret);