gh-117807: Handle invalid UTF-8 in mimetypes map files (GH-151216)

serhiy-storchaka <[email protected]> Tue, 04 Aug 2026 12:47:12 -0400 (EDT)
Newsgroups gmane.comp.python.cvs
Message-ID <[email protected]>
aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8zMGFjMjNlM2U0MTNjMmQz
OGI4MDY5MWIxYzgwZTNjZDc0YTIyNjM5DQpjb21taXQ6IDMwYWMyM2UzZTQxM2MyZDM4YjgwNjkx
YjFjODBlM2NkNzRhMjI2MzkNCmJyYW5jaDogbWFpbg0KYXV0aG9yOiBIYXJqb3RoIEtoYXJhIDxo
YXJqb3RoLmtoYXJhQGdtYWlsLmNvbT4NCmNvbW1pdHRlcjogc2VyaGl5LXN0b3JjaGFrYSA8c3Rv
cmNoYWthQGdtYWlsLmNvbT4NCmRhdGU6IDIwMjYtMDgtMDRUMTk6NDc6MDIrMDM6MDANCnN1bW1h
cnk6DQoNCmdoLTExNzgwNzogSGFuZGxlIGludmFsaWQgVVRGLTggaW4gbWltZXR5cGVzIG1hcCBm
aWxlcyAoR0gtMTUxMjE2KQ0KDQpmaWxlczoNCkEgTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIw
MjYtMDYtMTAtMDAtMDAtMDEuZ2gtaXNzdWUtMTE3ODA3LkN4MTE3OC5yc3QNCk0gTGliL21pbWV0
eXBlcy5weQ0KTSBMaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weQ0KDQpkaWZmIC0tZ2l0IGEvTGli
L21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkNCmluZGV4IDQzMzllZjVhNjEzOTdkLi4x
ZDZiMzNmZTg1NGM5NCAxMDA2NDQNCi0tLSBhL0xpYi9taW1ldHlwZXMucHkNCisrKyBiL0xpYi9t
aW1ldHlwZXMucHkNCkBAIC0yNTAsNyArMjUwLDcgQEAgZGVmIHJlYWQoc2VsZiwgZmlsZW5hbWUs
IHN0cmljdD1UcnVlKToNCiAgICAgICAgIGxpc3Qgb2Ygc3RhbmRhcmQgdHlwZXMsIGVsc2UgdG8g
dGhlIGxpc3Qgb2Ygbm9uLXN0YW5kYXJkDQogICAgICAgICB0eXBlcy4NCiAgICAgICAgICIiIg0K
LSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoNCisg
ICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdXJy
b2dhdGVlc2NhcGUnKSBhcyBmcDoNCiAgICAgICAgICAgICBzZWxmLnJlYWRmcChmcCwgc3RyaWN0
KQ0KIA0KICAgICBkZWYgcmVhZGZwKHNlbGYsIGZwLCBzdHJpY3Q9VHJ1ZSk6DQpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIGRlZiBpbml0KGZpbGVzPU5vbmUpOg0KIA0KIGRlZiByZWFkX21pbWVfdHlwZXMo
ZmlsZSk6DQogICAgIHRyeToNCi0gICAgICAgIGYgPSBvcGVuKGZpbGUsIGVuY29kaW5nPSd1dGYt
OCcpDQorICAgICAgICBmID0gb3BlbihmaWxlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N1
cnJvZ2F0ZWVzY2FwZScpDQogICAgIGV4Y2VwdCBPU0Vycm9yOg0KICAgICAgICAgcmV0dXJuIE5v
bmUNCiAgICAgd2l0aCBmOg0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5
IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkNCmluZGV4IDE5OTgzZmEzZmE3NjI4Li4xZTBm
NjY2NGFmMGQwNiAxMDA2NDQNCi0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5DQorKysg
Yi9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weQ0KQEAgLTY3LDkgKzY3LDUwIEBAIGRlZiB0ZXN0
X3JlYWRfbWltZV90eXBlcyhzZWxmKToNCiAgICAgICAgIHdpdGggdW5pdHRlc3QubW9jay5wYXRj
aC5vYmplY3QobWltZXR5cGVzLCAnb3BlbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybl92YWx1ZT1mcCkgYXMgbW9ja19vcGVuOg0KICAgICAgICAgICAg
IG1pbWVfZGljdCA9IG1pbWV0eXBlcy5yZWFkX21pbWVfdHlwZXMoZmlsZW5hbWUpDQotICAgICAg
ICAgICAgbW9ja19vcGVuLmFzc2VydF9jYWxsZWRfd2l0aChmaWxlbmFtZSwgZW5jb2Rpbmc9J3V0
Zi04JykNCisgICAgICAgICAgICBtb2NrX29wZW4uYXNzZXJ0X2NhbGxlZF93aXRoKGZpbGVuYW1l
LCBlbmNvZGluZz0ndXRmLTgnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3JzPSdzdXJyb2dhdGVlc2NhcGUnKQ0KICAgICAgICAgZXEobWltZV9kaWN0WyIu
RnJhbsOnYWlzIl0sICJhcHBsaWNhdGlvbi9uby1tYW5zLWxhbmQiKQ0KIA0KKyAgICBkZWYgdGVz
dF9yZWFkX21pbWVfdHlwZXNfaW52YWxpZF91dGY4X2NvbW1lbnQoc2VsZik6DQorICAgICAgICB3
aXRoIG9zX2hlbHBlci50ZW1wX2RpcigpIGFzIGRpcmVjdG9yeToNCisgICAgICAgICAgICBkYXRh
ID0gKGIiIyBub24tVVRGLTggY29tbWVudDogXHg4M1xuIg0KKyAgICAgICAgICAgICAgICAgICAg
YiJ4LWFwcGxpY2F0aW9uL3gtdW5pdHRlc3QgcHl1bml0XG4iKQ0KKyAgICAgICAgICAgIGZpbGUg
PSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCAic2FtcGxlLm1pbWV0eXBlIikNCisgICAgICAgICAg
ICB3aXRoIG9wZW4oZmlsZSwgIndiIikgYXMgZjoNCisgICAgICAgICAgICAgICAgZi53cml0ZShk
YXRhKQ0KKw0KKyAgICAgICAgICAgIG1pbWVfZGljdCA9IG1pbWV0eXBlcy5yZWFkX21pbWVfdHlw
ZXMoZmlsZSkNCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKA0KKyAgICAgICAgICAgICAg
ICBtaW1lX2RpY3RbIi5weXVuaXQiXSwgIngtYXBwbGljYXRpb24veC11bml0dGVzdCIpDQorDQor
ICAgICAgICAgICAgZGIgPSBtaW1ldHlwZXMuTWltZVR5cGVzKCkNCisgICAgICAgICAgICBkYi5y
ZWFkKGZpbGUpDQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgNCisgICAgICAgICAgICAg
ICAgZGIuZ3Vlc3NfZmlsZV90eXBlKCJzYW1wbGUucHl1bml0IilbMF0sDQorICAgICAgICAgICAg
ICAgICJ4LWFwcGxpY2F0aW9uL3gtdW5pdHRlc3QiKQ0KKw0KKyAgICAgICAgICAgIG1pbWV0eXBl
cy5pbml0KGZpbGVzPVtmaWxlXSkNCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKA0KKyAg
ICAgICAgICAgICAgICBtaW1ldHlwZXMuZ3Vlc3NfZmlsZV90eXBlKCJzYW1wbGUucHl1bml0Iilb
MF0sDQorICAgICAgICAgICAgICAgICJ4LWFwcGxpY2F0aW9uL3gtdW5pdHRlc3QiKQ0KKw0KKyAg
ICBkZWYgdGVzdF9yZWFkX21pbWVfdHlwZXNfaW52YWxpZF91dGY4X3R5cGUoc2VsZik6DQorICAg
ICAgICAjIEEgbm9uLVVURi04IGJ5dGUgaW4gYSB0eXBlIG9yIGV4dGVuc2lvbiAobm90IG9ubHkg
aW4gYSBjb21tZW50KSBpcw0KKyAgICAgICAgIyBwcmVzZXJ2ZWQgdmlhIHN1cnJvZ2F0ZWVzY2Fw
ZSwgc28gdGhlIG1hcHBpbmcgaXMgbm90IGNvcnJ1cHRlZC4NCisgICAgICAgIHdpdGggb3NfaGVs
cGVyLnRlbXBfZGlyKCkgYXMgZGlyZWN0b3J5Og0KKyAgICAgICAgICAgIGRhdGEgPSAoYiJ4LWFw
cGxpY2F0aW9uL3gtdW5pdHRlc3QgcHl1bml0XG4iDQorICAgICAgICAgICAgICAgICAgICBiImFw
cGxpY2F0aW9uL2JhZFx4ODMgYmFkZXh0XHg4M1xuIikNCisgICAgICAgICAgICBmaWxlID0gb3Mu
cGF0aC5qb2luKGRpcmVjdG9yeSwgInNhbXBsZS5taW1ldHlwZSIpDQorICAgICAgICAgICAgd2l0
aCBvcGVuKGZpbGUsICJ3YiIpIGFzIGY6DQorICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkN
CisNCisgICAgICAgICAgICBiYWRfdHlwZSA9IGIiYXBwbGljYXRpb24vYmFkXHg4MyIuZGVjb2Rl
KCJ1dGYtOCIsICJzdXJyb2dhdGVlc2NhcGUiKQ0KKyAgICAgICAgICAgIGJhZF9leHQgPSBiIi5i
YWRleHRceDgzIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZWVzY2FwZSIpDQorDQorICAgICAg
ICAgICAgbWltZV9kaWN0ID0gbWltZXR5cGVzLnJlYWRfbWltZV90eXBlcyhmaWxlKQ0KKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV9kaWN0WyIucHl1bml0Il0sICJ4LWFwcGxpY2F0
aW9uL3gtdW5pdHRlc3QiKQ0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV9kaWN0
W2JhZF9leHRdLCBiYWRfdHlwZSkNCisNCiAgICAgZGVmIHRlc3RfaW5pdF9yZWluaXRpYWxpemVz
KHNlbGYpOg0KICAgICAgICAgIyBJc3N1ZSA0OTM2OiBtYWtlIHN1cmUgYW4gaW5pdCBzdGFydHMg
Y2xlYW4NCiAgICAgICAgICMgRmlyc3QsIHB1dCBzb21lIHBvaXNvbiBpbnRvIHRoZSB0eXBlcyB0
YWJsZQ0KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDI2LTA2LTEwLTAw
LTAwLTAxLmdoLWlzc3VlLTExNzgwNy5DeDExNzgucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJy
YXJ5LzIwMjYtMDYtMTAtMDAtMDAtMDEuZ2gtaXNzdWUtMTE3ODA3LkN4MTE3OC5yc3QNCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMC4uZDZhODc0YTg0ODY3YTINCi0t
LSAvZGV2L251bGwNCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDI2LTA2LTEwLTAw
LTAwLTAxLmdoLWlzc3VlLTExNzgwNy5DeDExNzgucnN0DQpAQCAtMCwwICsxLDIgQEANCitGaXgg
Om1vZDpgbWltZXR5cGVzYCBpbml0aWFsaXphdGlvbiBmcm9tIE1JTUUgbWFwIGZpbGVzIGNvbnRh
aW5pbmcgaW52YWxpZA0KK1VURi04IGJ5dGVzLg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpQeXRob24tY2hlY2tpbnMgbWFpbGluZyBsaXN0IC0tIHB5
dGhvbi1jaGVja2luc0BweXRob24ub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8g
cHl0aG9uLWNoZWNraW5zLWxlYXZlQHB5dGhvbi5vcmcKaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcv
bWFpbG1hbjMvL2xpc3RzL3B5dGhvbi1jaGVja2lucy5weXRob24ub3JnCk1lbWJlciBhZGRyZXNz
OiBweXRob24tcHl0aG9uLWNoZWNraW5zQG0uZ21hbmUtbXgub3JnCg==