From: John Darrington Date: Sun, 25 Jun 2023 16:20:39 +0000 (+0200) Subject: Fixed an assertion failure in psppire-dump-sav when reading a corrupt file. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a0b5883f75ad4f39f1cbb0a34b0c0b6d2eaf1ef;p=pspp Fixed an assertion failure in psppire-dump-sav when reading a corrupt file. Closes bug #62980 --- 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);