瀏覽代碼

Fix infinite loop on circullar reference in form factory

When `->getName()` returns the same as `getParent()` we're going to infinite loop.
Dariusz Górecki 13 年之前
父節點
當前提交
36cebf0924
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      src/Symfony/Component/Form/FormFactory.php

+ 4 - 0
src/Symfony/Component/Form/FormFactory.php

@@ -220,6 +220,10 @@ class FormFactory implements FormFactoryInterface
 
 
         while (null !== $type) {
         while (null !== $type) {
             if ($type instanceof FormTypeInterface) {
             if ($type instanceof FormTypeInterface) {
+                if ($type->getName() == $type->getParent($options)) {
+                    throw new FormException(sprintf('The "%s" form type name ("%s") is not valid. It contains circullar reference to parent type name ("%s")', get_class($type), $type->getName(), $type->getParent($options)));
+                }
+
                 $this->addType($type);
                 $this->addType($type);
             } else {
             } else {
                 $type = $this->getType($type);
                 $type = $this->getType($type);