From 7c33d5596131d63a03dcb892c014141159867159 Mon Sep 17 00:00:00 2001 From: Rob Richards Date: Mon, 15 Sep 2003 12:29:52 +0000 Subject: [PATCH] validate encoding against valid handlers --- ext/dom/document.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ext/dom/document.c b/ext/dom/document.c index 1492dee1dc..7b357b750e 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -250,15 +250,17 @@ int dom_document_encoding_read(dom_object *obj, zval **retval TSRMLS_DC) int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC) { xmlDoc *docp; - int charset; + xmlCharEncodingHandlerPtr handler; docp = (xmlDocPtr) dom_object_get_node(obj); - if (docp->encoding != NULL) { - xmlFree((xmlChar *)docp->encoding); - } - charset = (int)xmlParseCharEncoding((const xmlChar *) Z_STRVAL_P(newval)); - if (charset > 0) { + handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval)); + + if (handler != NULL) { + xmlCharEncCloseFunc(handler); + if (docp->encoding != NULL) { + xmlFree((xmlChar *)docp->encoding); + } docp->encoding = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval)); return SUCCESS; } else { -- 2.40.0