php_error_docref(NULL, E_WARNING, "Empty string supplied as input");
RETURN_FALSE;
}
+ if (ZEND_SIZE_T_INT_OVFL(source_len)) {
+ php_error_docref(NULL, E_WARNING, "Input string is too long");
+ RETURN_FALSE;
+ }
+ if (ZEND_LONG_EXCEEDS_INT(options)) {
+ php_error_docref(NULL, E_WARNING, "Invalid options");
+ RETURN_FALSE;
+ }
newdoc = dom_document_parser(id, mode, source, source_len, options);
RETURN_FALSE;
}
+ if (ZEND_LONG_EXCEEDS_INT(options)) {
+ php_error_docref(NULL, E_WARNING, "Invalid options");
+ RETURN_FALSE;
+ }
+
if (mode == DOM_LOAD_FILE) {
if (CHECK_NULL_PATH(source, source_len)) {
php_error_docref(NULL, E_WARNING, "Invalid file source");
ctxt = htmlCreateFileParserCtxt(source, NULL);
} else {
source_len = xmlStrlen((xmlChar *) source);
- ctxt = htmlCreateMemoryParserCtxt(source, source_len);
+ if (ZEND_SIZE_T_INT_OVFL(source_len)) {
+ php_error_docref(NULL, E_WARNING, "Input string is too long");
+ RETURN_FALSE;
+ }
+ ctxt = htmlCreateMemoryParserCtxt(source, (int)source_len);
}
if (!ctxt) {
}
if (options) {
- htmlCtxtUseOptions(ctxt, options);
+ htmlCtxtUseOptions(ctxt, (int)options);
}
ctxt->vctxt.error = php_libxml_ctx_error;