[PATCH] s4:dsdb/common: samdb_result_parameters: fix bug in ldb_val to lsa_BinaryString conversation
abartlet at samba.org
Mon Jun 2 15:48:48 MDT 2014
On Tue, 2014-05-27 at 06:37 +0200, Stefan Gohmann wrote:
> Hi Karmen,
> Am 27.05.2014 03:24, schrieb Kamen Mazdrashki:
> > Hi Stefan,
> > On Mon, May 26, 2014 at 11:03 PM, Stefan Gohmann <gohmann at univention.de
> > <mailto:gohmann at univention.de>> wrote:
> > Hi Matthias,
> > Am 26.05.2014 14 <tel:26.05.2014%2014>:09, schrieb Matthias Dieter
> > Wallnöfer:
> > > Hi Stefan,
> > >
> > > it seems that no other one responded. I think that this is rather a
> > > problem with the "userParameters" attribute which we still do not
> > parse
> > > correctly I think.
> > thanks. I've re-checked this issue.
> > In my case the userParameters attribute is 105 bytes long. I think the
> > problem is that the length is odd and so there is one byte missing.
> > I was able to reproduce this issue while setting userParameters for a
> > user to the following value:
> > userParameters::
> > Q3R4Q2ZnUHJlc2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUAIaCAFDdHhDZmdQcmVzZW5045S15pSx5oiw44GiGAgBQ3R4Q2ZnRmxhZ3Mx44Cw44Gm44Cy44C5
> > and run
> > net user /domain username
> > from a Windows client.
> > Attached you'll find an updated patch which fixed the problem for me.
> > IMHO, the correct fix should be:
> > +s.array = talloc_array(mem_ctx, uint16_t, (val->length + 1) / 2);
> > so we don't allocate an extra bytes in 'normal' scenario when length is
> > even.
> you are right. Please find a new patch attached.
To be clear, I think this patch is wrong. If userParameters is ODD,
then we need to return NT_STATUS_INTERNAL_DB_CORRUPTION, it can't be
represented with a UTF-16 wire string.
(Then we need to dbcheck the database as described previously)
Andrew Bartlett http://samba.org/~abartlet/
Authentication Developer, Samba Team http://samba.org
Samba Developer, Catalyst IT http://catalyst.net.nz/services/samba
More information about the samba-technical