ZF-10865: Fatal error without a stack frame in Zend_Form->addElement when first argument is null

Description

Method addElement of Zend_Form checks for string or Zend_Form_Element only. If someone mispell the name of variable passed to addElement, fatal error occures.

Example:


$form = new Zend_Form;
$form->addElement(null); // Fatal Error: Call to a member function getOrder() on a non-object [1] on line '1055' in '...\libraries\Zend\Form.php'

$form = new Zend_Form;
$name = $form->createElement("text", "name");
$form->addElement($nane); // - wrong variable name, error without stack frame! Fatal Error: Call to a member function getOrder() on a non-object [1] on line '1055' in '...\libraries\Zend\Form.php'

Patch:


Index: Form.php
===================================================================
--- Form.php    
+++ Form.php    
@@ -1013,6 +1013,7 @@
      * @param  string|Zend_Form_Element $element
      * @param  string $name
      * @param  array|Zend_Config $options
+     * @throws Zend_Form_Exception on invalid element
      * @return Zend_Form
      */
     public function addElement($element, $name = null, $options = null)
@@ -1050,6 +1051,9 @@
 
             $this->_elements[$name] = $element;
             $this->_elements[$name]->addPrefixPaths($prefixPaths);
+        } else {
+            require_once 'Zend/Form/Exception.php';
+            throw new Zend_Form_Exception('Invalid element provided');
         }
 
         $this->_order[$name] = $this->_elements[$name]->getOrder();

Comments

Patch file

Patch file

Thanks for your submission. I've created a new version of your patch which is relative to the repository root (this makes committing to the repository easier), added a unit test to confirm the issue, and informed the developer list it is ready for consideration.

Fixed in trunk (by adam) at r23881 and in release branch 1.11 at 23950