Use EXTRA_VERSION_NAME and EXTRA_VERSION_DESCRIPTION
[lttng-tools.git] / src / bin / lttng-crash / lttng-crash.c
index 298ed71a43c2b1b47053156f624aa50b39fd0519..de556a30bc9cd20c1a81c20513a0db4e88ae0174 100644 (file)
@@ -227,9 +227,10 @@ static void usage(void)
 static void version(FILE *ofp)
 {
        fprintf(ofp, "%s (LTTng Crash Trace Viewer) " VERSION " - " VERSION_NAME
-"%s\n",
+"%s%s\n",
                        progname,
-                       GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION);
+                       GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION,
+                       EXTRA_VERSION_NAME[0] == '\0' ? "" : " - " EXTRA_VERSION_NAME);
 }
 
 /*
@@ -498,7 +499,8 @@ int check_magic(const uint8_t *magic)
 }
 
 static
-int get_crash_layout(struct lttng_crash_layout *layout, int fd)
+int get_crash_layout(struct lttng_crash_layout *layout, int fd,
+               const char *input_file)
 {
        char *map;
        int ret = 0, unmapret;
@@ -509,7 +511,21 @@ int get_crash_layout(struct lttng_crash_layout *layout, int fd)
        const struct crash_abi_unknown *abi;
        uint16_t endian;
        enum lttng_crash_type layout_type;
+       struct stat stat;
 
+       ret = fstat(fd, &stat);
+       if (ret < 0) {
+               PERROR("Failed to fstat '%s'", input_file);
+               return -1;
+       }
+       if (stat.st_size < RB_CRASH_DUMP_ABI_LEN) {
+               ERR("File '%s' truncated: file length of %" PRIi64
+                               " bytes does not meet the minimal expected "
+                               "length of %d bytes",
+                               input_file, (int64_t) stat.st_size,
+                               RB_CRASH_DUMP_ABI_LEN);
+               return -1;
+       }
        map = mmap(NULL, RB_CRASH_DUMP_ABI_LEN, PROT_READ, MAP_PRIVATE,
                fd, 0);
        if (map == MAP_FAILED) {
@@ -838,7 +854,7 @@ int extract_file(int output_dir_fd, const char *output_file,
        }
 
        /* Query the crash ABI layout */
-       ret = get_crash_layout(&layout, fd_src);
+       ret = get_crash_layout(&layout, fd_src, input_file);
        if (ret) {
                goto close_src;
        }
This page took 0.026549 seconds and 5 git commands to generate.