AIX portability problem in samba3 passdb/pdb_ldap.c

David Collier-Brown davec-b at rogers.com
Mon Aug 14 15:47:04 GMT 2006


   Hmmn, there's an strptime in the OpenBSD codebase, which
could be adopted, in lib/libc/time, with the usual BSD license.

--dave

Chris Cowan wrote:
> Thanks for the offer. I was trying to stick to using IBM's proprietary 
> compiler, and the native OS libraries. In doing some google searches, it 
> appears that other opensource packages have run into this. Although 
> strptime() is not "technically" broken on AIX, and I found at least one 
> PMR opened on this issue to clarify the correct behavior.
> 
> I just wanted to point out this problem, since I'm sure it will probably 
> rear on plaforms other than Linux. I wrote something using sscanf and 
> sprintf to quickly fix this (but then found out about 
> include/safe_string.h ;)
> 
> I should also mention that the actual core file was generated from the 
> timegm(&tm) call. The member values in tm were non-sensical after the 
> failed strptime() and were subsequently used as an array indices, etc. 
> (tm->tm_mon in particular). Perhaps timegm() should do some range checking?
> 
> Regards,
> Chris
> 
> David Collier-Brown <davec-b at rogers.com> wrote on 08/13/2006 05:19:12 PM:
> 
>  >    Numerous strptimes require whitespace, so one often parses
>  > such date-stamps with sscanf, as we did before strptime was invented.
>  >
>  >    If you can't use the glibc version for some reason, I can
>  > happily write you a strptime implemented by rewriting the
>  > date string into a sscanf string.
>  >
>  > --dave (who is doing porting libraries in his Copious Spare Time) c-b
>  >
>  >
>  > Chris Cowan wrote:
>  > >
>  > > Just ran across this problem with the Samba 3 LDAP passdb code on 
> AIX.   I
>  > > was getting intermittent failures authenticating on AIX 5.2 and total
>  > > failure on AIX 5.3.
>  > >
>  > > The code is checking the modifyTimestamp attribute in ldap and then 
> parsing
>  > > the string into struct tm with strptime().    My ldap servers 
> return the
>  > > timestamp in the format "20060810153445Z."  strptime() on AIX wants the
>  > > fields in the buffer to be delimited.  (e.g. with whitespace like 
> "2006 08
>  > > 10 15 34 45Z")    The glib2 version on Linux doesn't require this.  Of
>  > > course, there is also a question of whether you should have this
>  > > definition, too:
> 
> 
> 
>  >
>  > --
>  > David Collier-Brown,         | Always do right. This will gratify
>  > System Programmer and Author | some people and astonish the rest
>  > davecb at spamcop.net           |                      -- Mark Twain
>  > (416) 223-5943
> 

-- 
David Collier-Brown,         | Always do right. This will gratify
System Programmer and Author | some people and astonish the rest
davecb at spamcop.net           |                      -- Mark Twain
(416) 223-5943


More information about the samba-technical mailing list