mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
Backport fix for uaf during pcre jit fallback
Backports parts of https://vcs.pcre.org/pcre2?view=revision&revision=1175 fixing https://bugs.exim.org/show_bug.cgi?id=2453.
This commit is contained in:
parent
3322c78a88
commit
ab61d5caf9
@ -12321,7 +12321,7 @@ if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler)))
|
||||
sljit_free_compiler(compiler);
|
||||
SLJIT_FREE(common->optimized_cbracket, allocator_data);
|
||||
SLJIT_FREE(common->private_data_ptrs, allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, compiler->allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data);
|
||||
return PCRE2_ERROR_NOMEMORY;
|
||||
}
|
||||
|
||||
@ -12375,7 +12375,7 @@ if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler)))
|
||||
sljit_free_compiler(compiler);
|
||||
SLJIT_FREE(common->optimized_cbracket, allocator_data);
|
||||
SLJIT_FREE(common->private_data_ptrs, allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, compiler->allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data);
|
||||
return PCRE2_ERROR_NOMEMORY;
|
||||
}
|
||||
|
||||
@ -12464,7 +12464,7 @@ while (common->currententry != NULL)
|
||||
sljit_free_compiler(compiler);
|
||||
SLJIT_FREE(common->optimized_cbracket, allocator_data);
|
||||
SLJIT_FREE(common->private_data_ptrs, allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, compiler->allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data);
|
||||
return PCRE2_ERROR_NOMEMORY;
|
||||
}
|
||||
flush_stubs(common);
|
||||
@ -12589,7 +12589,7 @@ while (label_addr != NULL)
|
||||
sljit_free_compiler(compiler);
|
||||
if (executable_func == NULL)
|
||||
{
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, compiler->allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data);
|
||||
return PCRE2_ERROR_NOMEMORY;
|
||||
}
|
||||
|
||||
@ -12604,7 +12604,7 @@ else
|
||||
/* This case is highly unlikely since we just recently
|
||||
freed a lot of memory. Not impossible though. */
|
||||
sljit_free_code(executable_func);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, compiler->allocator_data);
|
||||
PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data);
|
||||
return PCRE2_ERROR_NOMEMORY;
|
||||
}
|
||||
memset(functions, 0, sizeof(executable_functions));
|
||||
|
Loading…
Reference in New Issue
Block a user