[Date Prev][Date Next] [Chronological] [Thread] [Top]

smbk5pwd not respecting olcSmbK5PwdEnable on 64-bit platforms

There are a few threads on the web [1][2] where people are running into 
problems with smbk5PwdEnable being set to 'samba' but the smbk5pwd module 
still insisting on loading all the Kerberos configuration regardless, 
which fails if you aren't actually using Kerberos at all.

We have also been experiencing this but I have noticed (and confirmed by 
spinning up two brand-new Debian VMs) that it is only a problem on 64-bit 
machines; 32-bit architectures respect the attribute's value.

I suspect this has something to do with the call to verbs_to_mask() in 
smbk5pwd_cf_func (under the case PC_SMB_ENABLE)[3] - my very basic 
printf() debugging shows that m is set correctly on 32-bit architectures 
but on 64-bit architectures returns a varying and strangely-numbered 
value (4511419, -1407332384, 353253328 in subsequent runs). The problem 
goes away if the m variable is initialised to 0 before the call to verbs_to_mask().

I wonder if verbs_to_mask() is possibly not 64-bit clean but my C foo is 
not strong enough to confirm or deny this.

Any ideas? For the moment I'm simply using
         case PC_SMB_ENABLE: {
-                slap_mask_t     mode = pi->mode, m;
+                slap_mask_t     mode = pi->mode, m = 0;
but I'm not sure if this could have unintended consequences.


David Adam

[1]: http://www.openldap.org/lists/openldap-technical/201105/msg00136.html
[2]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=631120