From 0a0b5883f75ad4f39f1cbb0a34b0c0b6d2eaf1ef Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 25 Jun 2023 18:20:39 +0200 Subject: [PATCH] Fixed an assertion failure in psppire-dump-sav when reading a corrupt file. Closes bug #62980 --- utilities/pspp-dump-sav.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/utilities/pspp-dump-sav.c b/utilities/pspp-dump-sav.c index ce524eb20d..05b89b52ca 100644 --- a/utilities/pspp-dump-sav.c +++ b/utilities/pspp-dump-sav.c @@ -1094,23 +1094,29 @@ read_long_string_value_labels (struct sfm_reader *r, size_t size, size_t count) /* Read values. */ for (i = 0; i < n_values; i++) { - char *value; + char *value = NULL; int value_length; - char *label; + char *label = NULL; int label_length; posn = ftello (r->file); /* Read value. */ value_length = read_int (r); - value = xmalloc (value_length + 1); - read_string (r, value, value_length + 1); + if (value_length > 0) + { + value = xmalloc (value_length + 1); + read_string (r, value, value_length + 1); + } /* Read label. */ label_length = read_int (r); - label = xmalloc (label_length + 1); - read_string (r, label, label_length + 1); + if (label_length > 0) + { + label = xmalloc (label_length + 1); + read_string (r, label, label_length + 1); + } printf ("\t\t%08llx: \"%s\" (%d bytes) => \"%s\" (%d bytes)\n", posn, value, value_length, label, label_length); -- 2.30.2