You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2007/11/22 00:18:43 UTC

[jira] Resolved: (DIRSERVER-1104) Mixing Attribute value types results in write failures

     [ https://issues.apache.org/jira/browse/DIRSERVER-1104?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny resolved DIRSERVER-1104.
------------------------------------------

    Resolution: Fixed

There was a very stincky error in the way value removal where handled in AttributeImpl :
if one byte[] value was to be removed from an attribute's Value, then a pointer comparison was done instead of a Arrays.equals(). Obviously, the existing value was not removed, as the pointer was different.

In our case, we were trying to substitute a byte[] with the correct String value, after comparing the stored byte[] with the string.getBytes( "UTF-8" ). There were _no_ chance it could happen, leading the byte[] to stay into an attribute supposed to contain only Strings.

Fixed in bigbang  :
http://svn.apache.org/viewvc?rev=597245&view=rev

> Mixing Attribute value types results in write failures
> ------------------------------------------------------
>
>                 Key: DIRSERVER-1104
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1104
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: bigbang, 1.5.1
>            Reporter: Alex Karasulu
>            Assignee: Emmanuel Lecharny
>            Priority: Blocker
>             Fix For: bigbang
>
>         Attachments: error.log, offending.ldif
>
>
> This new bug is really serious and tricky. It has eluded us but comes out now thanks to a crazy size effect it has on Windows.  
> First a characterization of the bug.  An entry (Attributes object) may be valid and still contain an Attribute which has both byte[] and String array values.  Some may suggest that this is invalid since attributes are, according to their syntax, either binary of human readable.  However this is not the case.  The fact that an attributeType is human readable has no bearing on how the user supplies the value.  Human readable data can be provided as binary information so long as it still conforms to the syntax of the attribute.
> Here's an example entry which would cause such a failure:
>     dn: cn=person1,ou=system
>     objectClass: organizationalPerson
>     cn: person1
>     sn: sn_person1
>     seealso: cn=Good One,ou=people,o=sevenSeas
>     seealso:: Y249QmFkIEXDqWvDoCxvdT1wZW9wbGUsbz1zZXZlblNlYXM=
> This entry will cause the AttributeSerializerUtils.serialize() method to blow a ClassCastException.  Note the log of the error can be found attached to this issue.  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Resolved: (DIRSERVER-1104) Mixing Attribute value types results in write failures

Posted by Alex Karasulu <ak...@apache.org>.
Superb fix!!! You rock!

On Nov 21, 2007 6:18 PM, Emmanuel Lecharny (JIRA) <ji...@apache.org> wrote:
> Emmanuel Lecharny resolved DIRSERVER-1104.
> ------------------------------------------
>
>     Resolution: Fixed
>
> In our case, we were trying to substitute a byte[] with the correct String value, after comparing the stored byte[] with the string.getBytes( "UTF-8" ). There were _no_ chance it could happen, leading the byte[] to stay into an attribute supposed to contain only Strings.

Thanks for it.

Alex