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:
Fabien Potencier
2011-12-17 08:58:24 +01:00
2 changed files with 23 additions and 4 deletions
+8 -1
View File
@@ -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;
}
/*