]> git.cworth.org Git - fips/blobdiff - execute.c
Add explicit link to libpthread, to work around debugging issues
[fips] / execute.c
index cc01c436db2329e19184a7d651b3fe5e06efe5aa..eaedbb481602db781c8120d524cc326910b0ddf9 100644 (file)
--- a/execute.c
+++ b/execute.c
@@ -36,6 +36,7 @@
 #include <gelf.h>
 
 #include "execute.h"
+#include "xmalloc.h"
 
 /* Terminate a string representing a filename at the final '/' to
  * eliminate the final filename component, (leaving only the directory
@@ -85,7 +86,7 @@ get_bin_name (void *ctx)
 
        name_len = readlink (link, name, name_len - 1);
        if (name_len < 0) {
-               fprintf (stderr, "Failed to readlink %s: %s\n", link,
+               fprintf (stderr, "fips: Error: Failed to readlink %s: %s\n", link,
                         strerror (errno));
                exit (1);
        }
@@ -175,31 +176,31 @@ elf_bits (const char *program)
 
        fd = open (absolute_program, O_RDONLY, 0);
        if (fd < 0) {
-               fprintf (stderr, "Failed to open %s: %s\n", absolute_program,
+               fprintf (stderr, "fips: Failed to open %s: %s\n", absolute_program,
                         strerror (errno));
                exit (1);
        }
 
        if (elf_version (EV_CURRENT ) == EV_NONE) {
-               fprintf (stderr, "Failed to initialize elf library: %s\n",
+               fprintf (stderr, "fips: Failed to initialize elf library: %s\n",
                         elf_errmsg (-1));
                exit (1);
        }
 
        elf = elf_begin (fd, ELF_C_READ, NULL);
        if (elf == NULL) {
-               fprintf (stderr, "Call to elf_begin on %s failed: %s\n",
+               fprintf (stderr, "fips: Call to elf_begin on %s failed: %s\n",
                         absolute_program, elf_errmsg(-1));
                exit (1);
        }
 
        if (elf_kind (elf) != ELF_K_ELF) {
-               fprintf (stderr, "Not an ELF object: %s\n", absolute_program);
+               fprintf (stderr, "fips: Not an ELF object: %s\n", absolute_program);
                exit (1);
        }
 
        if (gelf_getehdr (elf, &ehdr) == NULL) {
-               fprintf (stderr, "getehdr on %s failed: %s\n",
+               fprintf (stderr, "fips: getehdr on %s failed: %s\n",
                         absolute_program, elf_errmsg (-1));
                exit (1);
        }
@@ -207,7 +208,7 @@ elf_bits (const char *program)
        class = gelf_getclass (elf);
 
        if (class == ELFCLASSNONE) {
-               fprintf (stderr, "getclass on %s failed: %s\n",
+               fprintf (stderr, "fips: getclass on %s failed: %s\n",
                         absolute_program, elf_errmsg (-1));
                exit (1);
        }
@@ -294,11 +295,7 @@ execute_with_fips_preload (int argc, char * const argv[])
        char **execvp_args;
        int i;
 
-       execvp_args = malloc((argc + 1) * sizeof(char *));
-       if (execvp_args == NULL) {
-               fprintf (stderr, "Out of memory,\n");
-               return 1;
-       }
+       execvp_args = xmalloc((argc + 1) * sizeof(char *));
 
        for (i = 0; i < argc; i++) {
                execvp_args[i] = argv[i];