diff --git a/src/spss/readstat_por_read.c b/src/spss/readstat_por_read.c index 44dc0f48..8657bbcf 100644 --- a/src/spss/readstat_por_read.c +++ b/src/spss/readstat_por_read.c @@ -372,6 +372,10 @@ static readstat_error_t read_missing_value_record(por_ctx_t *ctx) { } varinfo = &ctx->varinfo[ctx->var_offset]; + if (varinfo->n_missing_values >= 3) { + retval = READSTAT_ERROR_PARSE; + goto cleanup; + } if (varinfo->type == READSTAT_TYPE_DOUBLE) { if ((retval = read_double(ctx, &varinfo->missing_double_values[varinfo->n_missing_values])) != READSTAT_OK) { goto cleanup; @@ -382,10 +386,6 @@ static readstat_error_t read_missing_value_record(por_ctx_t *ctx) { goto cleanup; } } - if (varinfo->n_missing_values > 2) { - retval = READSTAT_ERROR_PARSE; - goto cleanup; - } varinfo->n_missing_values++; cleanup: