]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
use report_errno_and_exit() in src/shared/elf-util.c
authorIvan Kruglov <mail@ikruglov.com>
Wed, 6 Nov 2024 10:14:01 +0000 (11:14 +0100)
committerIvan Kruglov <mail@ikruglov.com>
Wed, 6 Nov 2024 10:18:38 +0000 (11:18 +0100)
src/shared/elf-util.c

index 69439b61ef2c42c339b559cb08971574cf229a3b..a3ff1fd3fb8347271af40c4295daed80770862d2 100644 (file)
@@ -827,12 +827,12 @@ int parse_elf_object(int fd, const char *executable, const char *root, bool fork
                 if (fork_disable_dump) {
                         r = RET_NERRNO(prctl(PR_SET_DUMPABLE, 0));
                         if (r < 0)
-                                goto child_fail;
+                                report_errno_and_exit(error_pipe[1], r);
                 }
 
                 r = parse_elf(fd, executable, root, ret ? &buf : NULL, ret_package_metadata ? &package_metadata : NULL);
                 if (r < 0)
-                        goto child_fail;
+                        report_errno_and_exit(error_pipe[1], r);
 
                 if (buf) {
                         size_t len = strlen(buf);
@@ -853,7 +853,7 @@ int parse_elf_object(int fd, const char *executable, const char *root, bool fork
                         if (r == -EAGAIN)
                                 log_warning("Write failed, backtrace will be truncated.");
                         else if (r < 0)
-                                goto child_fail;
+                                report_errno_and_exit(error_pipe[1], r);
 
                         return_pipe[1] = safe_close(return_pipe[1]);
                 }
@@ -866,10 +866,8 @@ int parse_elf_object(int fd, const char *executable, const char *root, bool fork
                         (void) fcntl(json_pipe[1], F_SETPIPE_SZ, COREDUMP_PIPE_MAX);
 
                         json_out = take_fdopen(&json_pipe[1], "w");
-                        if (!json_out) {
-                                r = -errno;
-                                goto child_fail;
-                        }
+                        if (!json_out)
+                                report_errno_and_exit(error_pipe[1], -errno);
 
                         r = sd_json_variant_dump(package_metadata, SD_JSON_FORMAT_FLUSH, json_out, NULL);
                         if (r < 0)
@@ -877,10 +875,6 @@ int parse_elf_object(int fd, const char *executable, const char *root, bool fork
                 }
 
                 _exit(EXIT_SUCCESS);
-
-        child_fail:
-                (void) write(error_pipe[1], &r, sizeof(r));
-                _exit(EXIT_FAILURE);
         }
 
         error_pipe[1] = safe_close(error_pipe[1]);