ICU add-on: validate mbState->converter before attempting to close.
This resolves crashes in gawk with multibyte support. Fixes #12515, #13103.
This commit is contained in:
parent
4d83a710f5
commit
079ab7f0b1
@ -551,8 +551,13 @@ ICUCtypeData::_GetConverterForMbState(mbstate_t* mbState,
|
||||
status_t
|
||||
ICUCtypeData::_DropConverterFromMbState(mbstate_t* mbState)
|
||||
{
|
||||
if (mbState->converter != NULL)
|
||||
if (mbState->converter != NULL && (char*)mbState->converter >= mbState->data
|
||||
&& (char*)mbState->converter < mbState->data + 8) {
|
||||
// check that the converter actually lives in *this* mbState,
|
||||
// otherwise we risk freeing a converter that doesn't belong to us;
|
||||
// this parallels the check in _GetConverterForMbState()
|
||||
ucnv_close((UConverter*)mbState->converter);
|
||||
}
|
||||
memset(mbState, 0, sizeof(mbstate_t));
|
||||
|
||||
return B_OK;
|
||||
|
Loading…
Reference in New Issue
Block a user