[Fedora-directory-devel] Please review: Bug 454030 - Need to address 64-bit compiler warnings - again

Rich Megginson rmeggins at redhat.com
Fri Dec 5 04:14:22 UTC 2008


https://bugzilla.redhat.com/show_bug.cgi?id=454030
Resolves: bug 454030
Bug Description: Need to address 64-bit compiler warnings - again
Reviewed by: ???
Files: see diff
Branch: HEAD
Fix Description: This patch cleans up most of the other remaining 
compiler warnings.  I compiled the directory server code with these 
flags on RHEL5 x86_64: -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 
-fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
I also enabled argument/format match checking for most of the commonly 
used varadic functions.  Most of the problems I found fell into these 
categories:
1) Too many or not enough arguments e.g. most everything that uses or 
did use LDAPDebug had extra 0,0 arguments.  If they had been switched to 
use slapi_log_error, I removed the extra arguments - for those places 
still using LDAPDebug, I introduced more macros to handle the number of 
arguments, since C macros cannot be varadic.
2) When using NSPR formatting functions, we have to use %llu or %lld for 
64-bit values, even on 64-bit systems.  However, for regular system 
formatting functions, we have to use %ld or %lu.  I introduced two new 
macros NSPRIu64 and NSPRI64 to handle cases where we are passing 
explicit 64-bit values to NSPR formatting functions, so that we can use 
the regular PRIu64 and PRI64 macros for regular system formatting 
functions.  I also made sure we used NSPRI* only with NSPR functions, 
and used PRI* only with system functions.
3) use %lu for size_t and %ld for time_t
I did find a few "real" errors, places that the code was doing something 
definitely not right:
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/acl/aclinit.c_sec4
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/acl/acllas.c_sec17
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/http/http_impl.c_sec1
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/memberof/memberof.c_sec1
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/pam_passthru/pam_ptimpl.c_sec1
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/replication/cl5_api.c_sec5
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/replication/cl5_clcache.c_sec2
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/plugins/replication/replutil.c_sec1
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/slapd/libglobs.c_sec1
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/slapd/back-ldbm/dbverify.c_sec2
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff#ldapserver/ldap/servers/slapd/back-ldbm/ldif2ldbm.c_sec3
This is why it's important to use this compiler checking, and why it's 
important to fix compiler warnings, if for no other reason than the 
sheer noise from so many warnings can mask real errors.
Platforms tested: RHEL5
Flag Day: no
Doc impact: no
https://bugzilla.redhat.com/attachment.cgi?id=325774&action=diff




More information about the Fedora-directory-devel mailing list