char start_new_table;
/* PPMd Variant H members */
+ char ppmd_valid;
char is_ppmd_block;
int ppmd_escape;
CPpmd7 ppmd7_context;
rar->unp_buffer = NULL;
memset(rar->lengthtable, 0, sizeof(rar->lengthtable));
Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
+ rar->ppmd_valid = 0;
/* Don't set any archive entries for non-file header types */
if (head_type == NEWSUB_HEAD)
return (ARCHIVE_FATAL);
}
Ppmd7_Init(&rar->ppmd7_context, maxorder);
+ rar->ppmd_valid = 1;
}
else
{
+ if (!rar->ppmd_valid) {
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+ "Invalid PPMd sequence");
+ return (ARCHIVE_FAILED);
+ }
if (!PpmdRAR_RangeDec_Init(&rar->range_dec))
{
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,