153aa9179Sopenharmony_ciFrom 1c5e1fc194a661783d4bffbfd4b4424a7d74881f Mon Sep 17 00:00:00 2001 253aa9179Sopenharmony_ciFrom: Nick Wellnhofer <wellnhofer@aevum.de> 353aa9179Sopenharmony_ciDate: Tue, 14 Feb 2023 13:56:21 +0100 453aa9179Sopenharmony_ciSubject: [PATCH] malloc-fail: Check for malloc failure in 553aa9179Sopenharmony_ci xmlFindCharEncodingHandler 653aa9179Sopenharmony_ci 753aa9179Sopenharmony_ciDon't return encoding handlers with a NULL name. 853aa9179Sopenharmony_ci 953aa9179Sopenharmony_ciFound with libFuzzer, see #344. 1053aa9179Sopenharmony_ci 1153aa9179Sopenharmony_ciReference:https://github.com/GNOME/libxml2/commit/1c5e1fc194a661783d4bffbfd4b4424a7d74881f 1253aa9179Sopenharmony_ciConflict:NA 1353aa9179Sopenharmony_ci--- 1453aa9179Sopenharmony_ci encoding.c | 12 ++++++++++++ 1553aa9179Sopenharmony_ci 1 file changed, 12 insertions(+) 1653aa9179Sopenharmony_ci 1753aa9179Sopenharmony_cidiff --git a/encoding.c b/encoding.c 1853aa9179Sopenharmony_ciindex c073a9c..400e860 100644 1953aa9179Sopenharmony_ci--- a/encoding.c 2053aa9179Sopenharmony_ci+++ b/encoding.c 2153aa9179Sopenharmony_ci@@ -1726,6 +1726,12 @@ xmlFindCharEncodingHandler(const char *name) { 2253aa9179Sopenharmony_ci } 2353aa9179Sopenharmony_ci memset(enc, 0, sizeof(xmlCharEncodingHandler)); 2453aa9179Sopenharmony_ci enc->name = xmlMemStrdup(name); 2553aa9179Sopenharmony_ci+ if (enc->name == NULL) { 2653aa9179Sopenharmony_ci+ xmlFree(enc); 2753aa9179Sopenharmony_ci+ iconv_close(icv_in); 2853aa9179Sopenharmony_ci+ iconv_close(icv_out); 2953aa9179Sopenharmony_ci+ return(NULL); 3053aa9179Sopenharmony_ci+ } 3153aa9179Sopenharmony_ci enc->input = NULL; 3253aa9179Sopenharmony_ci enc->output = NULL; 3353aa9179Sopenharmony_ci enc->iconv_in = icv_in; 3453aa9179Sopenharmony_ci@@ -1758,6 +1764,12 @@ xmlFindCharEncodingHandler(const char *name) { 3553aa9179Sopenharmony_ci } 3653aa9179Sopenharmony_ci memset(encu, 0, sizeof(xmlCharEncodingHandler)); 3753aa9179Sopenharmony_ci encu->name = xmlMemStrdup(name); 3853aa9179Sopenharmony_ci+ if (encu->name == NULL) { 3953aa9179Sopenharmony_ci+ xmlFree(encu); 4053aa9179Sopenharmony_ci+ closeIcuConverter(ucv_in); 4153aa9179Sopenharmony_ci+ closeIcuConverter(ucv_out); 4253aa9179Sopenharmony_ci+ return(NULL); 4353aa9179Sopenharmony_ci+ } 4453aa9179Sopenharmony_ci encu->input = NULL; 4553aa9179Sopenharmony_ci encu->output = NULL; 4653aa9179Sopenharmony_ci encu->uconv_in = ucv_in; 4753aa9179Sopenharmony_ci-- 4853aa9179Sopenharmony_ci2.27.0 4953aa9179Sopenharmony_ci 50