Author: rmeggins
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26931/ldapserver/ldap/servers/slapd
Modified Files:
agtmmap.c auth.c bind.c config.c configdse.c conntable.c
detach.c dse.c filter.c libglobs.c log.c log.h main.c
mapping_tree.c pblock.c saslbind.c snmp_collator.c
statechange.h task.c uuid.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: agtmmap.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/agtmmap.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- agtmmap.c 10 Nov 2006 23:45:40 -0000 1.10
+++ agtmmap.c 8 Oct 2008 17:29:03 -0000 1.11
@@ -195,7 +195,7 @@
{
/* Without this we will get segv when we try to read/write later */
buf = calloc (1, sz);
- write (fd, buf, sz);
+ (void)write (fd, buf, sz);
free (buf);
}
Index: auth.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/auth.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- auth.c 27 Aug 2008 21:56:07 -0000 1.10
+++ auth.c 8 Oct 2008 17:29:03 -0000 1.11
@@ -449,7 +449,7 @@
if ( conn->c_flags & CONN_FLAG_START_TLS ) {
if ( cipherInfo.symKeyBits == 0 ) {
start_tls_graceful_closure( conn, NULL, 1 );
- slapi_ch_free((void **)&cipher);
+ slapi_ch_free_string(&cipher);
return ;
}
}
@@ -457,7 +457,7 @@
if (config_get_SSLclientAuth() == SLAPD_SSLCLIENTAUTH_OFF ) {
slapi_log_access (LDAP_DEBUG_STATS, "conn=%d SSL %i-bit %s\n",
conn->c_connid, keySize, cipher ? cipher : "NULL" );
- slapi_ch_free((void **)&cipher);
+ slapi_ch_free_string(&cipher);
return;
}
if (clientCert == NULL) {
@@ -499,7 +499,7 @@
LDAPDebug (LDAP_DEBUG_TRACE, "<= ldapu_cert_to_ldap_entry() %i
(%s)%s\n",
err, extraErrorMsg, chain ? "" : " NULL");
}
- slapi_ch_free((void**)&basedn);
+ slapi_ch_free_string(&basedn);
slapu_msgfree (internal_ld, chain);
}
if (subject) free (subject);
@@ -522,6 +522,6 @@
bind_credentials_set( conn, SLAPD_AUTH_SSL, clientDN,
SLAPD_AUTH_SSL, clientDN, clientCert , NULL);
- slapi_ch_free((void **)&cipher);
+ slapi_ch_free_string(&cipher);
/* clientDN and clientCert will be freed later */
}
Index: bind.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/bind.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- bind.c 27 Aug 2008 21:05:17 -0000 1.13
+++ bind.c 8 Oct 2008 17:29:03 -0000 1.14
@@ -103,7 +103,7 @@
rv = slapi_pw_find_sv( rdnpwvals, cred ) == 0;
value_done(&rdnpwbv);
}
- slapi_ch_free( (void **) &rootpw );
+ slapi_ch_free_string( &rootpw );
return rv;
}
@@ -787,6 +787,6 @@
}
if ( NULL != dnbuf_dynamic ) {
- slapi_ch_free( (void **)&dnbuf_dynamic );
+ slapi_ch_free_string( &dnbuf_dynamic );
}
}
Index: config.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/config.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- config.c 14 May 2008 18:39:31 -0000 1.11
+++ config.c 8 Oct 2008 17:29:03 -0000 1.12
@@ -566,11 +566,11 @@
}
}
- slapi_ch_free((void **)&buf);
+ slapi_ch_free_string(&buf);
}
bail:
- slapi_ch_free((void **)&buf);
+ slapi_ch_free_string(&buf);
return rc;
}
Index: configdse.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/configdse.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- configdse.c 17 Sep 2007 22:48:10 -0000 1.8
+++ configdse.c 8 Oct 2008 17:29:03 -0000 1.9
@@ -102,7 +102,7 @@
retval = (ptype && !strcasecmp(ptype, "pwdstoragescheme"));
if (!retval)
retval = (ptype && !strcasecmp(ptype, "reverpwdstoragescheme"));
- slapi_ch_free((void**)&ptype);
+ slapi_ch_free_string(&ptype);
return retval;
}
@@ -178,7 +178,7 @@
be = slapi_get_next_backend (cookie);
}
- slapi_ch_free ((void **)&cookie);
+ slapi_ch_free_string (&cookie);
/* show be_type */
attrlist_delete( &e->e_attrs, "nsslapd-betype");
@@ -195,7 +195,7 @@
be = slapi_get_next_backend(cookie);
}
- slapi_ch_free ( (void **) &cookie);
+ slapi_ch_free_string (&cookie);
/* show private suffixes */
attrlist_delete ( &e->e_attrs, "nsslapd-privatenamespaces");
@@ -222,7 +222,7 @@
be = slapi_get_next_backend(cookie);
}
- slapi_ch_free ((void **) &cookie);
+ slapi_ch_free_string (&cookie);
/* show syntax plugins */
attrlist_delete ( &e->e_attrs, CONFIG_PLUGIN_ATTRIBUTE );
@@ -432,7 +432,7 @@
/* if the password has been set, it will be hashed */
if ((pwd = config_get_rootpw()) != NULL) {
slapi_entry_attr_set_charptr(e, CONFIG_ROOTPW_ATTRIBUTE, pwd);
- slapi_ch_free((void**)&pwd);
+ slapi_ch_free_string(&pwd);
}
*returncode= rc;
Index: conntable.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/conntable.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- conntable.c 18 Oct 2007 00:08:34 -0000 1.9
+++ conntable.c 8 Oct 2008 17:29:03 -0000 1.10
@@ -438,7 +438,7 @@
val.bv_len = strlen( bufptr );
attrlist_merge( &e->e_attrs, "connection", vals );
if (newbuf) {
- slapi_ch_free((void **) &newbuf);
+ slapi_ch_free_string(&newbuf);
}
}
PR_Unlock( ct->c[i].c_mutex );
Index: detach.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/detach.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- detach.c 3 Apr 2008 21:07:55 -0000 1.7
+++ detach.c 8 Oct 2008 17:29:03 -0000 1.8
@@ -127,7 +127,7 @@
}
(void) chdir( errorlog );
config_set_workingdir(CONFIG_WORKINGDIR_ATTRIBUTE, errorlog, errorbuf, 1);
- slapi_ch_free((void**)&errorlog);
+ slapi_ch_free_string(&errorlog);
}
} else {
/* calling config_set_workingdir to check for validity of directory, don't apply
*/
@@ -135,7 +135,7 @@
exit(1);
}
(void) chdir( workingdir );
- slapi_ch_free((void**)&workingdir);
+ slapi_ch_free_string(&workingdir);
}
if ( (sd = open( "/dev/null", O_RDWR )) == -1 ) {
Index: dse.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/dse.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- dse.c 4 Jun 2008 22:22:55 -0000 1.9
+++ dse.c 8 Oct 2008 17:29:03 -0000 1.10
@@ -72,6 +72,13 @@
#include <pwd.h>
#endif /* _WIN32 */
+/* Required to get portable printf/scanf format macros */
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#else
+#error Need to define portable format macros such as PRIu64
+#endif /* HAVE_INTTYPES_H */
+
/* #define SLAPI_DSE_DEBUG */ /* define this to force trace log */
/* messages to always be logged */
@@ -463,6 +470,8 @@
slapi_ch_free((void **)&pdse);
LDAPDebug( SLAPI_DSE_TRACELEVEL, "Removed [%d] entries from the dse
tree.\n",
nentries,0,0 );
+
+ return 0; /* no one checks this return value */
}
/*
@@ -603,7 +612,7 @@
struct berval val;
vals[0] = &val;
vals[1] = NULL;
- sprintf(value_buffer,"%lu",current_sub_count);
+ sprintf(value_buffer,"%" PRIuPTR,current_sub_count);
val.bv_val = value_buffer;
val.bv_len = strlen (val.bv_val);
switch(mod_op)
Index: filter.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/filter.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- filter.c 10 Nov 2006 23:45:40 -0000 1.9
+++ filter.c 8 Oct 2008 17:29:03 -0000 1.10
@@ -1280,7 +1280,7 @@
if(1 < *bufsize)
{
sprintf( buf, ")" );
- *bufsize--;
+ (*bufsize)--;
}
}
break;
@@ -1313,7 +1313,7 @@
if(1 < *bufsize)
{
sprintf( buf, ")" );
- *bufsize--;
+ (*bufsize)--;
}
}
break;
Index: libglobs.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/libglobs.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- libglobs.c 27 Aug 2008 21:05:25 -0000 1.24
+++ libglobs.c 8 Oct 2008 17:29:03 -0000 1.25
@@ -5066,6 +5066,8 @@
{
struct berval **values = 0;
char *sval = 0;
+ int ival = 0;
+ uintptr_t pval;
/* for null values, just set the attr value to the empty
string */
@@ -5125,7 +5127,9 @@
case CONFIG_CONSTANT_INT:
PR_ASSERT(value); /* should be a constant value */
- slapi_entry_attr_set_int(e, cgas->attr_name, (int)value);
+ pval = (uintptr_t)value;
+ ival = (int)pval;
+ slapi_entry_attr_set_int(e, cgas->attr_name, ival);
break;
case CONFIG_SPECIAL_SSLCLIENTAUTH:
Index: log.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/log.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- log.c 3 Apr 2008 17:18:11 -0000 1.22
+++ log.c 8 Oct 2008 17:29:03 -0000 1.23
@@ -2216,12 +2216,12 @@
{
time_t curr_time;
time_t log_createtime= 0;
- time_t syncclock;
+ time_t syncclock = 0;
int type = LOG_CONTINUE;
int f_size = 0;
int maxlogsize, nlogs;
int rotationtime_secs = -1;
- int sync_enabled, timeunit;
+ int sync_enabled = 0, timeunit = 0;
if (fp == NULL) {
return LOG_ROTATE;
Index: log.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/log.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- log.h 10 Nov 2006 23:45:40 -0000 1.7
+++ log.h 8 Oct 2008 17:29:03 -0000 1.8
@@ -49,9 +49,13 @@
*************************************************************************/
#include <stdio.h>
#ifdef LINUX
+#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE /* glibc2 needs this */
+#endif
+#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
+#endif
#include <time.h>
#include <stdarg.h>
#include <sys/types.h>
Index: main.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/main.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- main.c 3 Apr 2008 21:07:55 -0000 1.24
+++ main.c 8 Oct 2008 17:29:03 -0000 1.25
@@ -261,7 +261,6 @@
fix_ownership()
{
struct passwd* pw=NULL;
- char dirname[MAXPATHLEN + 1];
slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
@@ -630,7 +629,6 @@
slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
daemon_ports_t ports_info = {0};
Slapi_Backend *be = NULL;
- int init_ssl;
#ifndef __LP64__
#if defined(__hpux) && !defined(__ia64)
/* for static constructors */
@@ -2598,7 +2596,6 @@
int return_value = 0;
Slapi_PBlock pb;
struct slapdplugin *backend_plugin;
- slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
/* this should be the first time to be called! if the init order
* is ever changed, these lines should be changed (or erased)!
Index: mapping_tree.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/mapping_tree.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- mapping_tree.c 12 Jun 2008 15:23:44 -0000 1.14
+++ mapping_tree.c 8 Oct 2008 17:29:03 -0000 1.15
@@ -1998,7 +1998,7 @@
* will be transferred to the internal DSE backend
*/
if( sdn_is_nulldn(target_sdn) &&
- ((op_type == SLAPI_OPERATION_SEARCH) && (scope == LDAP_SCOPE_BASE) ||
+ (((op_type == SLAPI_OPERATION_SEARCH) && (scope == LDAP_SCOPE_BASE)) ||
(op_type != SLAPI_OPERATION_SEARCH)) ) {
mtn_unlock();
Index: pblock.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/pblock.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- pblock.c 5 Aug 2008 22:18:37 -0000 1.16
+++ pblock.c 8 Oct 2008 17:29:03 -0000 1.17
@@ -2873,7 +2873,7 @@
case SLAPI_LDIF2DB_ENCRYPT:
case SLAPI_DB2LDIF_DECRYPT:
- pblock->pb_ldif_encrypt = (int)value;
+ pblock->pb_ldif_encrypt = *((int *)value);
break;
default:
Index: saslbind.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/saslbind.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- saslbind.c 27 Aug 2008 21:05:35 -0000 1.26
+++ saslbind.c 8 Oct 2008 17:29:03 -0000 1.27
@@ -297,7 +297,6 @@
int attrsonly = 0, scope = LDAP_SCOPE_SUBTREE;
LDAPControl **ctrls = NULL;
Slapi_Entry *entry = NULL;
- Slapi_DN *sdn;
char **attrs = NULL;
int regexmatch = 0;
char *base = NULL;
Index: snmp_collator.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/snmp_collator.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- snmp_collator.c 18 Oct 2007 14:05:24 -0000 1.13
+++ snmp_collator.c 8 Oct 2008 17:29:03 -0000 1.14
@@ -399,7 +399,6 @@
int err;
char *statspath = config_get_rundir();
- char *lp = NULL;
char *instdir = config_get_configdir();
char *instname = NULL;
Index: statechange.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/statechange.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- statechange.h 10 Nov 2006 23:45:40 -0000 1.5
+++ statechange.h 8 Oct 2008 17:29:03 -0000 1.6
@@ -78,7 +78,9 @@
#define STATECHANGE_VATTR_ENTRY_INVALIDATE 2
/* Vattr api caller data to be passed to statechange_register() */
+#ifdef DEFINE_STATECHANGE_STATICS
static int vattr_global_invalidate = STATECHANGE_VATTR_GLOBAL_INVALIDATE;
-static int vattr_entry_invalidate = STATECHANGE_VATTR_ENTRY_INVALIDATE;
+/* static int vattr_entry_invalidate = STATECHANGE_VATTR_ENTRY_INVALIDATE; */
+#endif /* DEFINE_STATECHANGE_STATICS */
#endif /*_STATE_NOTIFY_H_*/
Index: task.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/task.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- task.c 3 Apr 2008 16:52:46 -0000 1.15
+++ task.c 8 Oct 2008 17:29:03 -0000 1.16
@@ -193,6 +193,8 @@
if (task) {
return task->task_state;
}
+
+ return 0; /* return value not currently used */
}
/* this changes the 'nsTaskStatus' value, which is transient (anything logged
@@ -341,6 +343,8 @@
if (task) {
return task->task_private;
}
+
+ return NULL; /* return value not currently used */
}
/*
@@ -371,6 +375,8 @@
if (task) {
return task->task_refcount;
}
+
+ return 0; /* return value not currently used */
}
/* name is, for example, "import" */
Index: uuid.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/uuid.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- uuid.c 18 Oct 2007 00:08:34 -0000 1.11
+++ uuid.c 8 Oct 2008 17:29:03 -0000 1.12
@@ -361,8 +361,8 @@
/* uuid_create -- multithreaded generation */
static int uuid_create_mt(guid_t *uuid)
{
- uuid_time_t timestamp;
- unsigned16 clock_seq;
+ uuid_time_t timestamp = 0;
+ unsigned16 clock_seq = 0;
/* just bumps time sequence number. the actual
time calls are made by a uuid_update_state */