biRecord.c/boRecord.c: Fix gcc -Wsizeof-pointer-memaccess (#887)
../rec/biRecord.c:191:42: warning: argument to ‘sizeof’ in ‘strncpy’
call is the same expression as the source; did you mean to use the
size of the destination? [-Wsizeof-pointer-memaccess]
191 | strncpy(pstring,prec->znam,sizeof(prec->znam));
| ^
Use memcpy instead of snprintf.
STATIC_ASSERT is added to ensure znam and onam are sized enough.
This commit is contained in:
1 parent
0b1ec9809e
commit
f4ea5cc1e9
2 files changed
+33
-23
No files matched your search
@@ -178,16 +178,16 @@ static long get_enum_str(const DBADDR *paddr, char *pstring)
|
||||
|
||||
|
||||
index = dbGetFieldIndex(paddr);
|
||||
if(index!=biRecordVAL) {
|
||||
strcpy(pstring,"Illegal_Value");
|
||||
} else if(*pfield==0) {
|
||||
memcpy(pstring,prec->znam,sizeof(prec->znam));
|
||||
if(index != biRecordVAL) {
|
||||
strcpy(pstring, "Illegal_Value");
|
||||
} else if(*pfield == 0) {
|
||||
memcpy(pstring, prec->znam, sizeof(prec->znam));
|
||||
pstring[sizeof(prec->znam)] = 0;
|
||||
} else if(*pfield==1) {
|
||||
memcpy(pstring,prec->onam,sizeof(prec->onam));
|
||||
} else if(*pfield == 1) {
|
||||
memcpy(pstring, prec->onam, sizeof(prec->onam));
|
||||
pstring[sizeof(prec->onam)] = 0;
|
||||
} else {
|
||||
strcpy(pstring,"Illegal_Value");
|
||||
strcpy(pstring, "Illegal_Value");
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
@@ -198,10 +198,15 @@ static long get_enum_strs(const DBADDR *paddr,struct dbr_enumStrs *pes)
|
||||
|
||||
pes->no_str = 2;
|
||||
memset(pes->strs,'\0',sizeof(pes->strs));
|
||||
memcpy(pes->strs[0],prec->znam,sizeof(prec->znam));
|
||||
if(*prec->znam!=0) pes->no_str=1;
|
||||
memcpy(pes->strs[1],prec->onam,sizeof(prec->onam));
|
||||
if(*prec->onam!=0) pes->no_str=2;
|
||||
|
||||
STATIC_ASSERT(sizeof(prec->znam) <= sizeof(pes->strs[0]));
|
||||
memcpy(pes->strs[0], prec->znam, sizeof(prec->znam));
|
||||
if(*prec->znam != 0) pes->no_str = 1;
|
||||
|
||||
STATIC_ASSERT(sizeof(prec->onam) <= sizeof(pes->strs[1]));
|
||||
memcpy(pes->strs[1], prec->onam, sizeof(prec->onam));
|
||||
if(*prec->onam != 0) pes->no_str = 2;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -325,31 +325,36 @@ static long get_enum_str(const DBADDR *paddr, char *pstring)
|
||||
|
||||
|
||||
index = dbGetFieldIndex(paddr);
|
||||
if(index!=indexof(VAL)) {
|
||||
strcpy(pstring,"Illegal_Value");
|
||||
} else if(*pfield==0) {
|
||||
memcpy(pstring,prec->znam,sizeof(prec->znam));
|
||||
if(index != indexof(VAL)) {
|
||||
strcpy(pstring, "Illegal_Value");
|
||||
} else if(*pfield == 0) {
|
||||
memcpy(pstring, prec->znam, sizeof(prec->znam));
|
||||
pstring[sizeof(prec->znam)] = 0;
|
||||
} else if(*pfield==1) {
|
||||
memcpy(pstring,prec->onam,sizeof(prec->onam));
|
||||
} else if(*pfield == 1) {
|
||||
memcpy(pstring, prec->onam, sizeof(prec->onam));
|
||||
pstring[sizeof(prec->onam)] = 0;
|
||||
} else {
|
||||
strcpy(pstring,"Illegal_Value");
|
||||
strcpy(pstring, "Illegal_Value");
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static long get_enum_strs(const DBADDR *paddr,struct dbr_enumStrs *pes)
|
||||
{
|
||||
boRecord *prec=(boRecord *)paddr->precord;
|
||||
boRecord *prec = (boRecord *)paddr->precord;
|
||||
|
||||
/*SETTING no_str=0 breaks channel access clients*/
|
||||
pes->no_str = 2;
|
||||
memset(pes->strs,'\0',sizeof(pes->strs));
|
||||
memcpy(pes->strs[0],prec->znam,sizeof(pes->strs[0]));
|
||||
if(*prec->znam!=0) pes->no_str=1;
|
||||
memcpy(pes->strs[1],prec->onam,sizeof(pes->strs[1]));
|
||||
if(*prec->onam!=0) pes->no_str=2;
|
||||
|
||||
STATIC_ASSERT(sizeof(prec->znam) <= sizeof(pes->strs[0]));
|
||||
memcpy(pes->strs[0], prec->znam, sizeof(pes->strs[0]));
|
||||
if(*prec->znam != 0) pes->no_str = 1;
|
||||
|
||||
STATIC_ASSERT(sizeof(prec->onam) <= sizeof(pes->strs[1]));
|
||||
memcpy(pes->strs[1], prec->onam, sizeof(pes->strs[1]));
|
||||
if(*prec->onam != 0) pes->no_str = 2;
|
||||
|
||||
return(0);
|
||||
}
|
||||
static long put_enum_str(const DBADDR *paddr, const char *pstring)
|
||||
|
||||
Reference in new issue
Block a user