]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dissect-image: initially fds[] array fully
authorLennart Poettering <lennart@poettering.net>
Tue, 23 Feb 2021 14:11:07 +0000 (15:11 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 23 Feb 2021 14:45:12 +0000 (15:45 +0100)
THe previous code wasn't wrong, but it's certainly nicer to avoid a
partially uninitialized array here, hence Coverity has a point
complaining about this.

Coverity 1446731

src/shared/dissect-image.c

index 791d747136e68e65c25023c3039e131c46497043..6ad68584e5d1a0fea2a78814720285c9f1a762dd 100644 (file)
@@ -2280,8 +2280,11 @@ int dissected_image_acquire_metadata(DissectedImage *m) {
                 log_debug("No image name available, will skip extension-release metadata");
 
         for (; n_meta_initialized < _META_MAX; n_meta_initialized ++) {
-                if (!paths[n_meta_initialized])
+                if (!paths[n_meta_initialized]) {
+                        fds[2*n_meta_initialized] = fds[2*n_meta_initialized+1] = -1;
                         continue;
+                }
+
                 if (pipe2(fds + 2*n_meta_initialized, O_CLOEXEC) < 0) {
                         r = -errno;
                         goto finish;
@@ -2435,11 +2438,8 @@ int dissected_image_acquire_metadata(DissectedImage *m) {
         strv_free_and_replace(m->extension_release, extension_release);
 
 finish:
-        for (k = 0; k < n_meta_initialized; k++) {
-                if (!paths[k])
-                        continue;
+        for (k = 0; k < n_meta_initialized; k++)
                 safe_close_pair(fds + 2*k);
-        }
 
         return r;
 }