From 3fbe8ab77452998fd646bf26ee8162aab0ae8659 Mon Sep 17 00:00:00 2001
From: Noriko Hosoi <nhosoi@redhat.com>
Date: Wed, 13 Jul 2016 18:59:01 -0700
Subject: [PATCH 09/15] Ticket #48919 - Compiler warnings while building
389-ds-base on RHEL7
Description: Cleaned up warnings from gcc and clang.
https://fedorahosted.org/389/ticket/48919
Reviewed by wibrown@redhat.com (Thank you, William!!)
(cherry picked from commit 18c6029f64c48b330a101cbadceb8293d39bf5e2)
---
ldap/servers/plugins/acl/acllas.c | 1 -
ldap/servers/slapd/agtmmap.c | 10 +++++++++-
ldap/servers/slapd/back-ldbm/idl_new.c | 4 ++--
.../servers/slapd/back-ldbm/ldbm_instance_config.c | 5 +++++
ldap/servers/slapd/back-ldbm/ldif2ldbm.c | 15 ++++++++++-----
ldap/servers/slapd/detach.c | 11 +++++++----
ldap/servers/slapd/localhost.c | 10 +++++++---
ldap/servers/slapd/protect_db.c | 22 +++++++++++++++-------
ldap/servers/slapd/protect_db.h | 3 +++
ldap/servers/slapd/saslbind.c | 3 +++
ldap/servers/slapd/tools/ldclt/ldapfct.c | 5 ++++-
ldap/servers/slapd/tools/ldif.c | 5 ++++-
ldap/servers/slapd/tools/mmldif.c | 20 ++++++++++++--------
ldap/servers/slapd/util.c | 9 ++++++---
ldap/servers/snmp/main.c | 15 ++++++++++++---
lib/base/file.cpp | 1 -
lib/base/fsmutex.cpp | 10 +++++++---
17 files changed, 106 insertions(+), 43 deletions(-)
diff --git a/ldap/servers/plugins/acl/acllas.c b/ldap/servers/plugins/acl/acllas.c
index ff9b450..47ac0b8 100644
--- a/ldap/servers/plugins/acl/acllas.c
+++ b/ldap/servers/plugins/acl/acllas.c
@@ -190,7 +190,6 @@ extern int ldapu_member_certificate_match (void* cert, const char* desc);
/****************************************************************************/
/* Defines, Constants, ande Declarations */
/****************************************************************************/
-static char* const type_objectClass = "objectclass";
static char* const filter_groups = "(|(objectclass=groupOfNames) (objectclass=groupOfUniqueNames)(objectclass=groupOfCertificates)(objectclass=groupOfURLs))";
static char* const type_member = "member";
static char* const type_uniquemember = "uniquemember";
diff --git a/ldap/servers/slapd/agtmmap.c b/ldap/servers/slapd/agtmmap.c
index 6f72d57..629bc1b 100644
--- a/ldap/servers/slapd/agtmmap.c
+++ b/ldap/servers/slapd/agtmmap.c
@@ -160,7 +160,15 @@ agt_mopen_stats (char * statsfile, int mode, int *hdl)
{
/* Without this we will get segv when we try to read/write later */
buf = calloc (1, sz);
- (void)write (fd, buf, sz);
+ if (write(fd, buf, sz) < 0) {
+ err = errno;
+#if (0)
+ fprintf (stderr, "write failed errno=%d from %s(line: %d)\n", err, __FILE__, __LINE__);
+#endif
+ rc = err;
+ free (buf);
+ goto bail;
+ }
free (buf);
}
diff --git a/ldap/servers/slapd/back-ldbm/idl_new.c b/ldap/servers/slapd/back-ldbm/idl_new.c
index 63df49f..a8d76d8 100644
--- a/ldap/servers/slapd/back-ldbm/idl_new.c
+++ b/ldap/servers/slapd/back-ldbm/idl_new.c
@@ -403,8 +403,8 @@ idl_new_range_fetch(
time_t curtime;
void *saved_key = NULL;
int coreop = operator & SLAPI_OP_RANGE;
- ID key;
- ID suffix;
+ ID key = 0xff; /* random- to suppress compiler warning */
+ ID suffix = 0; /* random- to suppress compiler warning */
idl_range_id_pair *leftover = NULL;
size_t leftoverlen = 32;
int leftovercnt = 0;
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_instance_config.c b/ldap/servers/slapd/back-ldbm/ldbm_instance_config.c
index 9302410..698be66 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_instance_config.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_instance_config.c
@@ -1155,6 +1155,11 @@ ldbm_instance_post_delete_instance_entry_callback(Slapi_PBlock *pb, Slapi_Entry*
rc = PR_Delete(dbp);
}
PR_ASSERT(rc == 0);
+ if (rc != 0) {
+ LDAPDebug1Arg(LDAP_DEBUG_ANY,
+ "ldbm_instance_post_delete_instance_entry_callback:"
+ " failed to delete %s\n", dbp);
+ }
PR_smprintf_free(dbp);
}
PR_CloseDir(dirhandle);
diff --git a/ldap/servers/slapd/back-ldbm/ldif2ldbm.c b/ldap/servers/slapd/back-ldbm/ldif2ldbm.c
index 0b2eab2..52338c2 100644
--- a/ldap/servers/slapd/back-ldbm/ldif2ldbm.c
+++ b/ldap/servers/slapd/back-ldbm/ldif2ldbm.c
@@ -1009,7 +1009,6 @@ export_one_entry(struct ldbminfo *li,
}
slapi_ch_free_string(&pw);
}
- rc = 0;
data.data = slapi_entry2str_with_options(expargs->ep->ep_entry,
&len, expargs->options);
data.size = len + 1;
@@ -1018,10 +1017,14 @@ export_one_entry(struct ldbminfo *li,
char idstr[32];
sprintf(idstr, "# entry-id: %lu\n", (u_long)expargs->ep->ep_id);
- write(expargs->fd, idstr, strlen(idstr));
+ rc = write(expargs->fd, idstr, strlen(idstr));
+ PR_ASSERT(rc > 0);
}
- write(expargs->fd, data.data, len);
- write(expargs->fd, "\n", 1);
+ rc = write(expargs->fd, data.data, len);
+ PR_ASSERT(rc > 0);
+ rc = write(expargs->fd, "\n", 1);
+ PR_ASSERT(rc > 0);
+ rc = 0;
if ((*expargs->cnt) % 1000 == 0) {
int percent;
@@ -1350,7 +1353,9 @@ ldbm_back_ldbm2ldif( Slapi_PBlock *pb )
*/
sprintf(vstr, "version: %d\n\n", myversion);
- write(fd, vstr, strlen(vstr));
+ rc = write(fd, vstr, strlen(vstr));
+ PR_ASSERT(rc > 0);
+ rc = 0;
}
eargs.decrypt = decrypt;
diff --git a/ldap/servers/slapd/detach.c b/ldap/servers/slapd/detach.c
index b5af952..b055a5c 100644
--- a/ldap/servers/slapd/detach.c
+++ b/ldap/servers/slapd/detach.c
@@ -48,7 +48,7 @@ int
detach( int slapd_exemode, int importexport_encrypt,
int s_port, daemon_ports_t *ports_info )
{
- int i, sd;
+ int i, sd, rc;
char *workingdir = 0;
char *errorlog = 0;
char *ptr = 0;
@@ -84,13 +84,15 @@ detach( int slapd_exemode, int importexport_encrypt,
if ( NULL == workingdir ) {
errorlog = config_get_errorlog();
if ( NULL == errorlog ) {
- (void) chdir( "/" );
+ rc = chdir( "/" );
+ PR_ASSERT(rc == 0);
} else {
if ((ptr = strrchr(errorlog, '/')) ||
(ptr = strrchr(errorlog, '\\'))) {
*ptr = 0;
}
- (void) chdir( errorlog );
+ rc = chdir( errorlog );
+ PR_ASSERT(rc == 0);
config_set_workingdir(CONFIG_WORKINGDIR_ATTRIBUTE, errorlog, NULL, 1);
slapi_ch_free_string(&errorlog);
}
@@ -99,7 +101,8 @@ detach( int slapd_exemode, int importexport_encrypt,
if (config_set_workingdir(CONFIG_WORKINGDIR_ATTRIBUTE, workingdir, NULL, 0) == LDAP_OPERATIONS_ERROR) {
return 1;
}
- (void) chdir( workingdir );
+ rc = chdir( workingdir );
+ PR_ASSERT(rc == 0);
slapi_ch_free_string(&workingdir);
}
diff --git a/ldap/servers/slapd/localhost.c b/ldap/servers/slapd/localhost.c
index 2c40493..7b4e903 100644
--- a/ldap/servers/slapd/localhost.c
+++ b/ldap/servers/slapd/localhost.c
@@ -118,9 +118,13 @@ find_localhost_DNS()
#ifndef NO_DOMAINNAME
if (domain == NULL) {
/* No domain found. Try getdomainname. */
- getdomainname (line, sizeof(line));
- LDAPDebug (LDAP_DEBUG_CONFIG, "getdomainname(%s)\n", line, 0, 0);
- if (line[0] != 0) {
+ line[0] = '\0';
+ if (getdomainname(line, sizeof(line)) < 0) { /* failure */
+ slapi_log_error(SLAPI_LOG_FATAL, "localhost_DNS", "getdomainname failed\n");
+ } else {
+ slapi_log_error(SLAPI_LOG_CONFIG, "localhost_DNS", "getdomainname(%s)\n", line);
+ }
+ if (line[0] != '\0') {
domain = &line[0];
}
}
diff --git a/ldap/servers/slapd/protect_db.c b/ldap/servers/slapd/protect_db.c
index b22daa1..4579852 100644
--- a/ldap/servers/slapd/protect_db.c
+++ b/ldap/servers/slapd/protect_db.c
@@ -42,7 +42,7 @@ grab_lockfile()
{
pid_t pid, owning_pid;
char lockfile[MAXPATHLEN];
- int fd, x;
+ int fd, x, rc;
int removed_lockfile = 0;
struct timeval t;
slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
@@ -60,8 +60,12 @@ grab_lockfile()
/* Try to grab it */
if ((fd = open(lockfile, O_RDWR | O_CREAT | O_EXCL, 0644)) != -1) {
/* We got the lock, write our pid to the file */
- write(fd, (void *) &pid, sizeof(pid_t));
- close(fd);
+ rc = write(fd, (void *) &pid, sizeof(pid_t));
+ close(fd);
+ if (rc < 0) {
+ fprintf(stderr, ERROR_WRITING_LOCKFILE, lockfile);
+ return rc;
+ }
return 0;
}
@@ -74,13 +78,17 @@ grab_lockfile()
while(1) {
/* Try to grab the lockfile NUM_TRIES times waiting WAIT_TIME milliseconds after each try */
- t.tv_sec = 0;
- t.tv_usec = WAIT_TIME * 1000;
+ t.tv_sec = 0;
+ t.tv_usec = WAIT_TIME * 1000;
for(x = 0; x < NUM_TRIES; x++) {
if ((fd = open(lockfile, O_RDWR | O_CREAT | O_EXCL, 0644)) != -1) {
/* Got the lock */
- write(fd, (void *) &pid, sizeof(pid_t));
- close(fd);
+ rc = write(fd, (void *) &pid, sizeof(pid_t));
+ close(fd);
+ if (rc < 0) {
+ fprintf(stderr, ERROR_WRITING_LOCKFILE, lockfile);
+ return rc;
+ }
return 0;
}
select(0, NULL, NULL, NULL, &t);
diff --git a/ldap/servers/slapd/protect_db.h b/ldap/servers/slapd/protect_db.h
index 0f729a2..66adfb3 100644
--- a/ldap/servers/slapd/protect_db.h
+++ b/ldap/servers/slapd/protect_db.h
@@ -26,6 +26,9 @@ void remove_slapd_process();
#define ERROR_ACCESSING_LOCKFILE "Error - Problem accessing the lockfile %s\n"
/* name of lockfile */
+#define ERROR_WRITING_LOCKFILE "Error - Problem writing the lockfile %s\n"
+ /* name of lockfile */
+
#define LOCKFILE_DEAD_OWNER "Error - The lockfile, %s, is held by process %d,\nwhich no longer seems to be running. If this is\nthe case, please remove the lockfile\n"
/* name of lockfile, pid of owning process */
diff --git a/ldap/servers/slapd/saslbind.c b/ldap/servers/slapd/saslbind.c
index eb68209..37175f4 100644
--- a/ldap/servers/slapd/saslbind.c
+++ b/ldap/servers/slapd/saslbind.c
@@ -547,6 +547,9 @@ int ids_sasl_init(void)
LDAPDebug( LDAP_DEBUG_TRACE, "=> ids_sasl_init\n", 0, 0, 0 );
PR_ASSERT(inited == 0);
+ if (inited != 0) {
+ LDAPDebug0Args(LDAP_DEBUG_ANY, "ids_sasl_init is called more than once.\n");
+ }
inited = 1;
serverfqdn = get_localhost_DNS();
diff --git a/ldap/servers/slapd/tools/ldclt/ldapfct.c b/ldap/servers/slapd/tools/ldclt/ldapfct.c
index e13983d..f084cb4 100644
--- a/ldap/servers/slapd/tools/ldclt/ldapfct.c
+++ b/ldap/servers/slapd/tools/ldclt/ldapfct.c
@@ -2552,7 +2552,10 @@ int ldclt_write_genldif_nb;
void
ldclt_flush_genldif (void)
{
- write (mctx.genldifFile, ldclt_write_genldif_buf, ldclt_write_genldif_nb);
+ if (write (mctx.genldifFile, ldclt_write_genldif_buf, ldclt_write_genldif_nb) < 0) {
+ printf("ldclt[%d]: ldclt_flush_genldif: Failed to write (%s) error=%d\n",
+ mctx.pid, ldclt_write_genldif_buf, errno);
+ }
ldclt_write_genldif_pt = ldclt_write_genldif_buf;
ldclt_write_genldif_nb = 0;
}
diff --git a/ldap/servers/slapd/tools/ldif.c b/ldap/servers/slapd/tools/ldif.c
index 1050fbd..5973c6b 100644
--- a/ldap/servers/slapd/tools/ldif.c
+++ b/ldap/servers/slapd/tools/ldif.c
@@ -132,7 +132,10 @@ int main( int argc, char **argv )
free( buf );
return( 1 );
}
- (void)fgets(buf+curlen, maxlen/2 + 1, stdin);
+ if (NULL == fgets(buf+curlen, maxlen/2 + 1, stdin)) {
+ /* no more input to read. */
+ break;
+ }
}
/* we have a full line, chop potential newline and turn into ldif */
if( buf[curlen-1] == '\n' )
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f846d0..ddfaf6c 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -766,8 +766,7 @@ readrec(edfFILE * edf1, attrib1_t ** attrib)
while (*vptr == ' ') vptr++; /* skip optional spaces */
b64 = initDec64((unsigned char *)att->value, 0x20000);
if (Dec64(b64, (unsigned char *) vptr)) {
- LDAPDebug(LDAP_DEBUG_TRACE, "%s\n invalid input line\n",
- line, 0, 0);
+ LDAPDebug(LDAP_DEBUG_TRACE, "%s\n invalid input line\n", line, 0, 0);
continue; /* invalid line, but we'll just skip it */
}
toolong = FALSE;
@@ -775,7 +774,11 @@ readrec(edfFILE * edf1, attrib1_t ** attrib)
lookahead = fgetc(edf1->fp);
if (lookahead != ' ')
break;
- (void)fgets(line, sizeof(line), edf1->fp);
+ line[0] = '\0';
+ if (NULL == fgets(line, sizeof(line), edf1->fp)) {
+ LDAPDebug0Args(LDAP_DEBUG_TRACE, "readrec: failed to read line\n");
+ break;
+ }
len = strlen(line);
for (lptr = line+len-1; len; len--, lptr--) {
if ((*lptr != '\n') && (*lptr != '\r'))
@@ -785,16 +788,14 @@ readrec(edfFILE * edf1, attrib1_t ** attrib)
rc = Dec64(b64, (unsigned char *)line);
if (rc == -1)
{
- LDAPDebug(LDAP_DEBUG_TRACE,
- "%s\n invalid input line\n", line, 0, 0);
+ LDAPDebug(LDAP_DEBUG_TRACE, "%s\n invalid input line\n", line, 0, 0);
continue; /* invalid line, but we'll just skip it */
}
if (rc) {
if (!toolong) {
toolong = TRUE;
- LDAPDebug(LDAP_DEBUG_TRACE,
- "%s\n line too long\n", line, 0, 0);
+ LDAPDebug(LDAP_DEBUG_TRACE, "%s\n line too long\n", line, 0, 0);
}
continue;
}
@@ -813,7 +814,10 @@ readrec(edfFILE * edf1, attrib1_t ** attrib)
lookahead = fgetc(edf1->fp);
if (lookahead != ' ')
break;
- (void)fgets(line, sizeof(line), edf1->fp);
+ if (NULL == fgets(line, sizeof(line), edf1->fp)) {
+ LDAPDebug0Args(LDAP_DEBUG_TRACE, "readrec: failed to read line\n");
+ break;
+ }
len = strlen(line);
for (lptr = line+len-1; len; len--, lptr--) {
if ((*lptr != '\n') && (*lptr != '\r'))
diff --git a/ldap/servers/slapd/util.c b/ldap/servers/slapd/util.c
index a5327d1..1ebdf2e 100644
--- a/ldap/servers/slapd/util.c
+++ b/ldap/servers/slapd/util.c
@@ -1592,7 +1592,9 @@ int util_info_sys_pages(size_t *pagesize, size_t *pages, size_t *procpages, size
return 1;
}
while (! feof(f)) {
- fgets(s, 79, f);
+ if (!fgets(s, 79, f)) {
+ break; /* error or eof */
+ }
if (feof(f)) {
break;
}
@@ -1614,8 +1616,9 @@ int util_info_sys_pages(size_t *pagesize, size_t *pages, size_t *procpages, size
return 1;
}
while (! feof(fm)) {
- fgets(s, 79, fm);
- /* Is this really needed? */
+ if (!fgets(s, 79, fm)) {
+ break; /* error or eof */
+ }
if (feof(fm)) {
break;
}
diff --git a/ldap/servers/snmp/main.c b/ldap/servers/snmp/main.c
index 3f96627..ea5050b 100644
--- a/ldap/servers/snmp/main.c
+++ b/ldap/servers/snmp/main.c
@@ -44,7 +44,7 @@ main (int argc, char *argv[]) {
netsnmp_log_handler *log_hdl = NULL;
int c, log_level = LOG_WARNING;
struct stat logdir_s;
- pid_t child_pid;
+ pid_t child_pid = 0;
FILE *pid_fp;
/* Load options */
@@ -74,7 +74,11 @@ main (int argc, char *argv[]) {
/* check if we're already running as another process */
if ((pid_fp = fopen(pidfile, "r")) != NULL) {
- fscanf(pid_fp, "%d", &child_pid);
+ int rc = fscanf(pid_fp, "%d", &child_pid);
+ if ((rc == 0) || (rc == EOF)) {
+ printf("ldap-agent: Failed to get pid from %s\n", pidfile);
+ exit(1);
+ }
fclose(pid_fp);
if (kill(child_pid, SIGUSR1) == 0) {
printf("ldap-agent: Already running as pid %d!\n", child_pid);
@@ -145,6 +149,7 @@ main (int argc, char *argv[]) {
/* run as a daemon */
if (netsnmp_daemonize(0, 0)) {
int i;
+ int rc;
/* sleep to allow pidfile to be created by child */
for (i=0; i < 3; i++) {
@@ -159,7 +164,11 @@ main (int argc, char *argv[]) {
exit(1);
}
- fscanf(pid_fp, "%d", &child_pid);
+ rc = fscanf(pid_fp, "%d", &child_pid);
+ if ((rc == 0) || (rc == EOF)) {
+ printf("ldap-agent: Failed to get pid from %s\n", pidfile);
+ exit(1);
+ }
fclose(pid_fp);
printf("ldap-agent: Started as pid %d\n", child_pid);
exit(0);
diff --git a/lib/base/file.cpp b/lib/base/file.cpp
index 8c9274a..ad4333e 100644
--- a/lib/base/file.cpp
+++ b/lib/base/file.cpp
@@ -38,7 +38,6 @@ extern "C" char *nscperror_lookup(int err);
/* PRFileDesc * SYS_ERROR_FD = NULL; */
const int errbuf_size = 256;
-const unsigned int LOCKFILERANGE=0x7FFFFFFF;
PRLock *_atomic_write_lock = NULL;
/* --------------------------------- stat --------------------------------- */
diff --git a/lib/base/fsmutex.cpp b/lib/base/fsmutex.cpp
index e8f2aff..a0e30fd 100644
--- a/lib/base/fsmutex.cpp
+++ b/lib/base/fsmutex.cpp
@@ -85,11 +85,15 @@ fsmutex_init(char *name, int number, int flags)
NSAPI_PUBLIC void
fsmutex_setowner(FSMUTEX fsm, uid_t uid, gid_t gid)
{
- if(!geteuid())
- (void) chown( ((fsmutex_s *)fsm)->id, uid, gid);
+ if(!geteuid()) {
+ int rc = chown( ((fsmutex_s *)fsm)->id, uid, gid);
+ PR_ASSERT(rc == 0);
+ if (rc != 0 ) {
+ return; /* just to suppress compiler warning... */
+ }
+ }
}
-
/* -------------------------- fsmutex_terminate --------------------------- */
static void
--
2.4.11