[Date Prev][Date Next]
Re: (ITS#6338) dnParent(x, x) can remove \0-termination
>> struct berval x = BER_BVC("cn=foo");
>> dnParent(x, x);
>> keeps x.bv_val pointing at "cn=foo" instead of at the \0
>> behind it. bv_len is correctly set to 0 though.
> Could be sort of intentional. As far as I remember, dnParent() is
> supposed to leave the second argument untouched, as it is often used
> on read-only data.
s/second/first/, but yes. With pdn=dn though (both args equal), the
code first reset pdn->bv_val and then used that value. Swapping it
makes more sense, and ensures that the output value is independent of
whether or not pdn == dn.
> Probably, the most appropriate fix consists in passing
> a temporary as the first argument.
No, the comment above the function says that pdn can be == dn.