X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fdissect-sysfile.c;h=3d26a0fb0275c448faa728d529c8ed72022dbd92;hb=78b2280e4d75fc07ce0f17c3607c0707f7ccb819;hp=25e2f7f43712b3ffbede9994e711071d03f12e39;hpb=a21231bcd08705522d4a4674e34fb87dd1c1bac8;p=pspp-builds.git diff --git a/tests/dissect-sysfile.c b/tests/dissect-sysfile.c index 25e2f7f4..3d26a0fb 100644 --- a/tests/dissect-sysfile.c +++ b/tests/dissect-sysfile.c @@ -357,16 +357,20 @@ read_variable_record (struct sfm_reader *r) if (has_variable_label == 1) { long long int offset = ftello (r->file); - size_t len; + size_t len, read_len; char label[255 + 1]; len = read_int (r); - if (len >= sizeof label) - sys_error (r, _("Variable %s has label of invalid length %zu."), - name, len); - read_string (r, label, len + 1); + + /* Read up to 255 bytes of label. */ + read_len = MIN (sizeof label - 1, len); + read_string (r, label, read_len + 1); printf("\t%08llx Variable label: \"%s\"\n", offset, label); + /* Skip unread label bytes. */ + skip_bytes (r, len - read_len); + + /* Skip label padding up to multiple of 4 bytes. */ skip_bytes (r, ROUND_UP (len, 4) - len); }