X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=execute.c;h=eaedbb481602db781c8120d524cc326910b0ddf9;hb=158a5862aeea9224fcd60c28b0bb19cb6b9f9381;hp=0719e2da23ce1c1b18d4f43a2dc62b5b6abfdb2d;hpb=540a35220007443b3a63998e6c0b6a205195444f;p=fips diff --git a/execute.c b/execute.c index 0719e2d..eaedbb4 100644 --- a/execute.c +++ b/execute.c @@ -36,6 +36,7 @@ #include #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); } @@ -279,6 +280,9 @@ find_libfips_path (void *ctx, const char *program) "\t%s\n" "and\n" "\t%s/" BINDIR_TO_LIBFIPSDIR "\n", bin_path, bin_path); + + fprintf(stderr, "\nIt's possible fips was not compiled with support for %d-bit applications.\n", bits); + fprintf(stderr, "Perhaps you need to install gcc-multilib and re-compile fips?\n"); exit (1); } @@ -291,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];