]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ask-password: req must be non-NULL
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 7 Jan 2025 10:28:15 +0000 (19:28 +0900)
committerLennart Poettering <lennart@poettering.net>
Tue, 7 Jan 2025 12:12:08 +0000 (13:12 +0100)
After #35074, the parameter 'req' must be non-NULL.

Fixes CID#1586101, CID#1586102, and CID#1586103.

src/shared/ask-password-api.c

index df8915082b38f37c67dcc56d13e6cdae4538b92f..91d8945fd13fe22d135095424ea3633e87d0f952 100644 (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);