[Fedora-directory-commits] ldapserver/lib/libaccess aclerror.cpp, 1.8, 1.9 acltools.cpp, 1.8, 1.9 lasdns.cpp, 1.8, 1.9 lasip.cpp, 1.7, 1.8 ldapacl.cpp, 1.6, 1.7 oneeval.cpp, 1.8, 1.9

Richard Allen Megginson rmeggins at fedoraproject.org
Wed Oct 8 17:29:07 UTC 2008


Author: rmeggins

Update of /cvs/dirsec/ldapserver/lib/libaccess
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26931/ldapserver/lib/libaccess

Modified Files:
	aclerror.cpp acltools.cpp lasdns.cpp lasip.cpp ldapacl.cpp 
	oneeval.cpp 
Log Message:
Bug Description: Need to address 64-bit compiler warnings - part 1
Reviewed by: nhosoi (Thanks!)
Fix Description: The intptr_t and uintptr_t are types which are defined as integer types that are the same size as the pointer (void *) type.  On the platforms we currently support, this is the same as long and unsigned long, respectively (ILP32 and LP64).  However, intptr_t and uintptr_t are more portable.  These can be used to assign a value passed as a void * to get an integer value, then "cast down" to an int or PRBool, and vice versa.  This seems to be a common idiom in other applications where values must be passed as void *.
For the printf/scanf formats, there is a standard header called inttypes.h which defines formats to use for various 64 bit quantities, so that you don't need to figure out if you have to use %lld or %ld for a 64-bit value - you just use PRId64 which is set to the correct value.  I also assumed that size_t is defined as the same size as a pointer so I used the PRIuPTR format macro for size_t.
I removed many unused variables and some unused functions.
I put parentheses around assignments in conditional expressions to tell the compiler not to complain about them.
I cleaned up some #defines that were defined more than once.
I commented out some unused goto labels.
Some of our header files shared among several source files define static variables.  I made it so that those variables are not defined unless a macro is set in the source file.  This avoids a lot of unused variable warnings.
I added some return values to functions that were declared as returning a value but did not return a value.  In all of these cases no one was checking the return value anyway.
I put explicit parentheses around cases like this: expr || expr && expr - the && has greater precedence than the ||.  The compiler complains because it wants you to make sure you mean expr || (expr && expr), not (expr || expr) && expr.
I cleaned up several places where the compiler was complaining about possible use of uninitialized variables.  There are still a lot of these cases remaining.
There are a lot of warnings like this:
lib/ldaputil/certmap.c:1279: warning: dereferencing type-punned pointer will break strict-aliasing rules
These are due to our use of void ** to pass in addresses of addresses of structures.  Many of these are calls to slapi_ch_free, but many are not - they are cases where we do not know what the type is going to be and may have to cast and modify the structure or pointer.  I started replacing the calls to slapi_ch_free with slapi_ch_free_string, but there are many many more that need to be fixed.
The dblayer code also contains a fix for https://bugzilla.redhat.com/show_bug.cgi?id=463991 - instead of checking for dbenv->foo_handle to see if a db "feature" is enabled, instead check the flags passed to open the dbenv.  This works for bdb 4.2 through bdb 4.7 and probably other releases as well.
Platforms tested: RHEL5 x86_64, Fedora 8 i386
Flag Day: no
Doc impact: no



Index: aclerror.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/aclerror.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- aclerror.cpp	10 Nov 2006 23:46:02 -0000	1.8
+++ aclerror.cpp	8 Oct 2008 17:29:05 -0000	1.9
@@ -100,7 +100,7 @@
 void aclErrorFmt(NSErr_t * errp, char * msgbuf, int maxlen, int maxdepth)
 {
     NSEFrame_t * efp;		/* error frame pointer */
-    int len;			/* length of error message text */
+    int len = 0;			/* length of error message text */
     int depth = 0;		/* current depth */
 
     msgbuf[0] = 0;


Index: acltools.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/acltools.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- acltools.cpp	18 Oct 2007 00:08:36 -0000	1.8
+++ acltools.cpp	8 Oct 2008 17:29:05 -0000	1.9
@@ -3060,7 +3060,7 @@
 
 	const int block_size = 50;
 	int  rv, list_size, list_index;
-	char ** local_list;
+	char ** local_list = NULL;
 	char * block ;
 	char * name;
 	char * next;


Index: lasdns.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/lasdns.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- lasdns.cpp	10 Nov 2006 23:46:02 -0000	1.8
+++ lasdns.cpp	8 Oct 2008 17:29:05 -0000	1.9
@@ -140,7 +140,7 @@
     size_t	delimiter;    	/* length of valid token	*/
     char	token[256];    	/* max length dns name		*/
     int		i;
-    int		ipcnt;
+    int		ipcnt = 0;
     char	**p;
     unsigned long	*ipaddrs=0;
     pool_handle_t *pool;
@@ -347,7 +347,7 @@
     int			result;
     int			aliasflg;
     char		*my_dns;
-    LASDnsContext_t 	*context;
+    LASDnsContext_t 	*context = NULL;
     int			rv;
 
     *cachable = ACL_INDEF_CACHABLE;


Index: lasip.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/lasip.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- lasip.cpp	10 Nov 2006 23:46:02 -0000	1.7
+++ lasip.cpp	8 Oct 2008 17:29:05 -0000	1.8
@@ -340,7 +340,7 @@
     int        stopbit;    /* Don't care after this point    */
     int        curbit;        /* current bit we're working on    */
     int        curval;        /* value of pattern[curbit]    */
-    LASIpTree_t    *curptr;    /* pointer to the current node    */
+    LASIpTree_t    *curptr = NULL;    /* pointer to the current node    */
     LASIpTree_t    *newptr;
 
     /* stop at the first 1 in the netmask from low to high         */
@@ -448,7 +448,7 @@
     IPAddr_t           ip;
     int                retcode;
     LASIpTree_t        *node;
-    LASIpContext_t     *context;
+    LASIpContext_t     *context = NULL;
     int		       rv;
     char	       ip_str[124];
 


Index: ldapacl.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/ldapacl.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ldapacl.cpp	10 Nov 2006 23:46:02 -0000	1.6
+++ ldapacl.cpp	8 Oct 2008 17:29:05 -0000	1.7
@@ -762,7 +762,7 @@
     PList_t resource = 0;
     PList_t auth_info = 0;
     PList_t global_auth = NULL;
-    int rv;
+    int rv = 0;
 
     /* Check if the userdn is available in the usr_cache */
     if (acl_usr_cache_enabled() && userdn) {


Index: oneeval.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/lib/libaccess/oneeval.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- oneeval.cpp	18 Oct 2007 00:08:36 -0000	1.8
+++ oneeval.cpp	8 Oct 2008 17:29:05 -0000	1.9
@@ -344,7 +344,7 @@
     ACLHandle_t        *acl;
     ACLExprHandle_t    *ace;
     int                ace_cnt = -1;
-    ACLAceEntry_t      *acelast, *new_ace;
+    ACLAceEntry_t      *acelast = NULL, *new_ace;
     ACLAceNumEntry_t   *entry, *temp_entry;
     char               **argp;
     ACLListCache_t     *cache;
@@ -635,7 +635,7 @@
     int i, j, right_num, delta;
     ACLCachable_t ace_cachable;
     int result;
-    int absolute;
+    int absolute = 0;
     int skipflag;
     int g_num;    /* index into the generic rights array.  */
     char **g_rights;




More information about the Fedora-directory-commits mailing list