From 3fbe8ab77452998fd646bf26ee8162aab0ae8659 Mon Sep 17 00:00:00 2001 From: Noriko Hosoi 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