mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-21 07:37:43 +00:00
merged branch arnaud-lb/ext-crash2 (PR #560)
Commits
-------
9e6f285 fixed crash in twig_template_get_attributes when input is not an array or object
Discussion
----------
Fix crash in twig_template_get_attributes when input is not an array or object
This fixes a crash when the input of twig_template_get_attributes() is not an array or object, and strict mode is enabled.
---------------------------------------------------------------------------
by nikic at 2011/12/16 12:03:21 -0800
Could you maybe place the exception tests in a different method?
---------------------------------------------------------------------------
by arnaud-lb at 2011/12/16 12:13:35 -0800
This method already expects many of its inputs to cause an exception to be thrown (it tests getAttribute() in strict mode, and in many cases the attribute isn't defined). I don't see a real benefit from moving these tests in a separate method in this case.
This commit is contained in:
+8
-1
@@ -821,7 +821,14 @@ PHP_FUNCTION(twig_template_get_attributes)
|
||||
if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC) TSRMLS_CC) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
TWIG_THROW_EXCEPTION("Twig_Error_Runtime" TSRMLS_CC, "Item \"%s\" for \"%s\" does not exist", item, TWIG_IMPLODE_ARRAY_KEYS(", ", object TSRMLS_CC));
|
||||
if (Z_TYPE_P(object) == IS_ARRAY) {
|
||||
TWIG_THROW_EXCEPTION("Twig_Error_Runtime" TSRMLS_CC, "Item \"%s\" for \"Array\" does not exist", item);
|
||||
} else {
|
||||
Z_ADDREF_P(object);
|
||||
convert_to_string_ex(&object);
|
||||
TWIG_THROW_EXCEPTION("Twig_Error_Runtime" TSRMLS_CC, "Item \"%s\" for \"%s\" does not exist", item, Z_STRVAL_P(object));
|
||||
zval_ptr_dtor(&object);
|
||||
}
|
||||
return;
|
||||
}
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user