Currently the "Symfony\Component\Form\Util
\PropertyPath::writeProperty" method performs a series of checks to
determine which way to set the property on the active object. In
particular, it checks whether a "setPropertyName()" method exists and
if it does then it checks to see if that is a public method. This
takes place before trying other methods such as a magic "__set()"
method or a public property of that name on the object.

Unfortunately this means if your object only exposes the magic
"__set()" method, but uses the "setPropertyName()" methods internally
as protected member methods the "writeProperty()" method will detect
that it can't access the "setPropertyName()" method first and throw an
exception.

In my opinion, this is not necessarily correct. While it is certainly
useful in some cases to detect a potential mistake, an external class
should not stop working due to the internal behaviour of an object.

I'd like to propose that the checks to detect whether the method is
public be moved in to their parent if statements, and the exception
removed. A message suggesting that developers check whether the
property or setter are public could be added to the final
"InvalidPropertyException". Is there another compelling reason to keep
these exceptions that I have missed?

Thanks,

Robert

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to symfony-devs@googlegroups.com
To unsubscribe from this group, send email to
symfony-devs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to