[Fedora-directory-commits] ldapserver/ldap/servers/plugins/acl aclparse.c, 1.11, 1.12 aclutil.c, 1.8, 1.9
Richard Allen Megginson
rmeggins at fedoraproject.org
Wed Oct 8 17:29:03 UTC 2008
- Previous message (by thread): [Fedora-directory-commits] ldapserver/include/ldaputil certmap.h, 1.5, 1.6
- Next message (by thread): [Fedora-directory-commits] ldapserver configure.ac, 1.50, 1.51 aclocal.m4, 1.71, 1.72 configure, 1.88, 1.89 config.h.in, 1.18, 1.19 missing, 1.53, 1.54 install-sh, 1.53, 1.54 depcomp, 1.53, 1.54 compile, 1.48, 1.49 config.sub, 1.52, 1.53 config.guess, 1.52, 1.53 Makefile.in, 1.93, 1.94
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: rmeggins
Update of /cvs/dirsec/ldapserver/ldap/servers/plugins/acl
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26931/ldapserver/ldap/servers/plugins/acl
Modified Files:
aclparse.c aclutil.c
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: aclparse.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/acl/aclparse.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- aclparse.c 24 Oct 2007 18:41:15 -0000 1.11
+++ aclparse.c 8 Oct 2008 17:29:01 -0000 1.12
@@ -936,8 +936,8 @@
* eg. "'ldap:///all"' or 'ldap:///all")' then exit in_dn_expr mode.
*/
if ( in_dn_expr && (word[len-1] == '"' ||
- len>1 && word[len-2] == '"' ||
- len>2 && word[len-3] == '"')) {
+ (len>1 && word[len-2] == '"') ||
+ (len>2 && word[len-3] == '"')) ) {
in_dn_expr = 0;
}
@@ -1692,7 +1692,7 @@
if ((str = strstr(s , "del=")) || ((str = strstr(s , "del ="))) ) {
str--;
*str = '\0';
- *str++;
+ str++;
}
@@ -1704,7 +1704,7 @@
if ((str = strstr(s , "add=")) || ((str = strstr(s , "add ="))) ) {
str--;
*str = '\0';
- *str++;
+ str++;
}
} else {
return(ACL_SYNTAX_ERR);
Index: aclutil.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/acl/aclutil.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- aclutil.c 18 Oct 2007 00:08:27 -0000 1.8
+++ aclutil.c 8 Oct 2008 17:29:01 -0000 1.9
@@ -1328,13 +1328,14 @@
PLHashNumber key,
char *value){
char *old_value = NULL;
+ uintptr_t pkey = (uintptr_t)key;
if ( (old_value = (char *)acl_ht_lookup( acl_ht, key)) != NULL ) {
acl_ht_remove( acl_ht, key);
slapi_ch_free((void **)&old_value);
}
- PL_HashTableAdd( acl_ht, (const void *)key, value);
+ PL_HashTableAdd( acl_ht, (const void *)pkey, value);
}
/*
@@ -1349,7 +1350,7 @@
static PLHashNumber acl_ht_hash( const void *key) {
- return( (PLHashNumber)key );
+ return( (PLHashNumber)((uintptr_t)key) );
}
/* Free all the values in the ht */
@@ -1397,14 +1398,14 @@
/* remove this entry from the ht--doesn't free the value.*/
void acl_ht_remove( acl_ht_t *acl_ht, PLHashNumber key) {
- PL_HashTableRemove( acl_ht, (const void *)key);
+ PL_HashTableRemove( acl_ht, (const void *)((uintptr_t)key) );
}
/* Retrieve a pointer to the value of the entry with key */
void *acl_ht_lookup( acl_ht_t *acl_ht,
PLHashNumber key) {
- return( PL_HashTableLookup( acl_ht, (const void *)key) );
+ return( PL_HashTableLookup( acl_ht, (const void *)((uintptr_t)key)) );
}
- Previous message (by thread): [Fedora-directory-commits] ldapserver/include/ldaputil certmap.h, 1.5, 1.6
- Next message (by thread): [Fedora-directory-commits] ldapserver configure.ac, 1.50, 1.51 aclocal.m4, 1.71, 1.72 configure, 1.88, 1.89 config.h.in, 1.18, 1.19 missing, 1.53, 1.54 install-sh, 1.53, 1.54 depcomp, 1.53, 1.54 compile, 1.48, 1.49 config.sub, 1.52, 1.53 config.guess, 1.52, 1.53 Makefile.in, 1.93, 1.94
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Fedora-directory-commits
mailing list