Skip to content

Commit 966b27e

Browse files
committed
SAS reader: improved support for GSS2021
1 parent 974a3fe commit 966b27e

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/sas/readstat_sas7bcat_read.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,15 @@ static readstat_error_t sas7bcat_parse_value_labels(const char *value_start, siz
118118
value.v.double_value = dval;
119119
}
120120
size_t label_len = sas_read2(&lbp2[8], ctx->bswap);
121-
if (&lbp2[10] + label_len - value_start > value_labels_len) {
121+
if (&lbp2[10] > value_start + value_labels_len) {
122122
retval = READSTAT_ERROR_PARSE;
123123
goto cleanup;
124124
}
125+
/* Some labels seem to overflow the reported block length, truncate it */
126+
/* (Observed with formats.sasbcat from GSS2021, produced with 9.0401M6X64_SR12R2 */
127+
if (label_len > value_start + value_labels_len - &lbp2[10]) {
128+
label_len = value_start + value_labels_len - &lbp2[10];
129+
}
125130
if (ctx->value_label_handler) {
126131
label = realloc(label, 4 * label_len + 1);
127132
retval = readstat_convert(label, 4 * label_len + 1,

0 commit comments

Comments
 (0)