Merge remote-tracking branch 'konrad/fix-compiler-warnings' into 3.15

* konrad/fix-compiler-warnings:
  epicsTime: rely on implicit copy constructor
  iocLogServer: check return values
  Fix potential buffer overflow in iocLogServer
  Fix weird use of strncpy
This commit is contained in:
Michael Davidsaver
2019-06-24 18:21:32 -07:00
7 changed files with 18 additions and 14 deletions

View File

@@ -37,7 +37,7 @@
static unsigned short ioc_log_port;
static long ioc_log_file_limit;
static char ioc_log_file_name[256];
static char ioc_log_file_name[512];
static char ioc_log_file_command[256];
@@ -866,7 +866,12 @@ static int setupSIGHUP(struct ioc_log_server *pserver)
*/
static void sighupHandler(int signo)
{
(void) write(sighupPipe[1], "SIGHUP\n", 7);
const char msg[] = "SIGHUP\n";
const ssize_t bytesWritten = write(sighupPipe[1], msg, sizeof(msg));
if (bytesWritten != sizeof(msg)) {
fprintf(stderr, "iocLogServer: failed to write to SIGHUP pipe because "
"`%s'\n", strerror(errno));
}
}
@@ -884,7 +889,10 @@ static void serviceSighupRequest(void *pParam)
/*
* Read and discard message from pipe.
*/
(void) read(sighupPipe[0], buff, sizeof buff);
if (read(sighupPipe[0], buff, sizeof buff) <= 0) {
fprintf(stderr, "iocLogServer: failed to read from SIGHUP pipe because "
"`%s'\n", strerror(errno));
};
/*
* Determine new log file name.

View File

@@ -205,9 +205,6 @@ epicsTime::epicsTime (const epicsTimeStamp &ts)
epicsTime::epicsTime () :
secPastEpoch(0u), nSec(0u) {}
epicsTime::epicsTime (const epicsTime &t) :
secPastEpoch (t.secPastEpoch), nSec (t.nSec) {}
epicsTime epicsTime::getCurrent ()
{
epicsTimeStamp current;

View File

@@ -81,7 +81,6 @@ public:
class formatProblemWithStructTM {};
epicsTime ();
epicsTime ( const epicsTime & t );
static epicsTime getEvent ( const epicsTimeEvent & );
static epicsTime getCurrent ();

View File

@@ -329,9 +329,9 @@ static long get_enum_strs(DBADDR *paddr,struct dbr_enumStrs *pes)
/*SETTING no_str=0 breaks channel access clients*/
pes->no_str = 2;
memset(pes->strs,'\0',sizeof(pes->strs));
strncpy(pes->strs[0],prec->znam,sizeof(prec->znam));
strncpy(pes->strs[0],prec->znam,sizeof(pes->strs[0]));
if(*prec->znam!=0) pes->no_str=1;
strncpy(pes->strs[1],prec->onam,sizeof(prec->onam));
strncpy(pes->strs[1],prec->onam,sizeof(pes->strs[1]));
if(*prec->onam!=0) pes->no_str=2;
return(0);
}

View File

@@ -98,7 +98,7 @@ static void monitor(stateRecord *prec)
monitor_mask = recGblResetAlarms(prec);
if(strncmp(prec->oval,prec->val,sizeof(prec->val))) {
db_post_events(prec,&(prec->val[0]),monitor_mask|DBE_VALUE|DBE_LOG);
strncpy(prec->oval,prec->val,sizeof(prec->val));
strncpy(prec->oval,prec->val,sizeof(prec->oval));
}
return;
}

View File

@@ -120,7 +120,7 @@ static long init_record(stringinRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
strncpy(prec->oval, prec->val, sizeof(prec->val));
strncpy(prec->oval, prec->val, sizeof(prec->oval));
return(0);
}
@@ -160,7 +160,7 @@ static void monitor(stringinRecord *prec)
if (strncmp(prec->oval, prec->val, sizeof(prec->val))) {
monitor_mask |= DBE_VALUE | DBE_LOG;
strncpy(prec->oval, prec->val, sizeof(prec->val));
strncpy(prec->oval, prec->val, sizeof(prec->oval));
}
if (prec->mpst == stringinPOST_Always)

View File

@@ -122,7 +122,7 @@ static long init_record(stringoutRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
strncpy(prec->oval, prec->val, sizeof(prec->val));
strncpy(prec->oval, prec->val, sizeof(prec->oval));
return(0);
}
@@ -188,7 +188,7 @@ static void monitor(stringoutRecord *prec)
if (strncmp(prec->oval, prec->val, sizeof(prec->val))) {
monitor_mask |= DBE_VALUE | DBE_LOG;
strncpy(prec->oval, prec->val, sizeof(prec->val));
strncpy(prec->oval, prec->val, sizeof(prec->oval));
}
if (prec->mpst == stringoutPOST_Always)