diff options
author | Rich Megginson <rmeggins@redhat.com> | 2008-10-08 17:29:05 +0000 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2008-10-08 17:29:05 +0000 |
commit | b3797a8704696ed77b69a042e75ce5553e24b68b (patch) | |
tree | eae8ee4c9ce9e46c010334d72e942d17ee71f768 /lib/libaccess | |
parent | 9506a1d704ce99945e12dc797f932b4a50a0da24 (diff) | |
download | ds-b3797a8704696ed77b69a042e75ce5553e24b68b.tar.gz ds-b3797a8704696ed77b69a042e75ce5553e24b68b.tar.xz ds-b3797a8704696ed77b69a042e75ce5553e24b68b.zip |
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
Diffstat (limited to 'lib/libaccess')
-rw-r--r-- | lib/libaccess/aclerror.cpp | 2 | ||||
-rw-r--r-- | lib/libaccess/acltools.cpp | 2 | ||||
-rw-r--r-- | lib/libaccess/lasdns.cpp | 4 | ||||
-rw-r--r-- | lib/libaccess/lasip.cpp | 4 | ||||
-rw-r--r-- | lib/libaccess/ldapacl.cpp | 2 | ||||
-rw-r--r-- | lib/libaccess/oneeval.cpp | 4 |
6 files changed, 9 insertions, 9 deletions
diff --git a/lib/libaccess/aclerror.cpp b/lib/libaccess/aclerror.cpp index 7c1d4a26..8e94f642 100644 --- a/lib/libaccess/aclerror.cpp +++ b/lib/libaccess/aclerror.cpp @@ -100,7 +100,7 @@ char * ACL_Program = "NSACL"; /* ACL facility name */ 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; diff --git a/lib/libaccess/acltools.cpp b/lib/libaccess/acltools.cpp index 9eb3292d..1b302df4 100644 --- a/lib/libaccess/acltools.cpp +++ b/lib/libaccess/acltools.cpp @@ -3060,7 +3060,7 @@ ACL_FileGetNameList(NSErr_t *errp, char * filename, char ***name_list) const int block_size = 50; int rv, list_size, list_index; - char ** local_list; + char ** local_list = NULL; char * block ; char * name; char * next; diff --git a/lib/libaccess/lasdns.cpp b/lib/libaccess/lasdns.cpp index 0b3d3dcf..de7d2a94 100644 --- a/lib/libaccess/lasdns.cpp +++ b/lib/libaccess/lasdns.cpp @@ -140,7 +140,7 @@ LASDnsBuild(NSErr_t *errp, char *attr_pattern, LASDnsContext_t *context, int ali 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 LASDnsEval(NSErr_t *errp, char *attr_name, CmpOp_t comparator, int result; int aliasflg; char *my_dns; - LASDnsContext_t *context; + LASDnsContext_t *context = NULL; int rv; *cachable = ACL_INDEF_CACHABLE; diff --git a/lib/libaccess/lasip.cpp b/lib/libaccess/lasip.cpp index aa698de6..01c76aa6 100644 --- a/lib/libaccess/lasip.cpp +++ b/lib/libaccess/lasip.cpp @@ -340,7 +340,7 @@ LASIpAddPattern(NSErr_t *errp, int netmask, int pattern, LASIpTree_t **treetop) 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 @@ int LASIpEval(NSErr_t *errp, char *attr_name, CmpOp_t comparator, IPAddr_t ip; int retcode; LASIpTree_t *node; - LASIpContext_t *context; + LASIpContext_t *context = NULL; int rv; char ip_str[124]; diff --git a/lib/libaccess/ldapacl.cpp b/lib/libaccess/ldapacl.cpp index 6be89b18..4b7fdc8b 100644 --- a/lib/libaccess/ldapacl.cpp +++ b/lib/libaccess/ldapacl.cpp @@ -762,7 +762,7 @@ NSAPI_PUBLIC int acl_user_exists (const char *user, const char *userdn, 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) { diff --git a/lib/libaccess/oneeval.cpp b/lib/libaccess/oneeval.cpp index a8f2b248..05de0e36 100644 --- a/lib/libaccess/oneeval.cpp +++ b/lib/libaccess/oneeval.cpp @@ -344,7 +344,7 @@ ACLEvalBuildContext( 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 @@ ACL_INTEvalTestRights( 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; |