The warning is this:
[epics@viper asyn]$ make -s
In function ‘setEnums.constprop’,
inlined from ‘interruptCallbackEnumBi’ at ../../asyn/devEpics/devAsynInt32.c:759:5:
../../asyn/devEpics/devAsynInt32.c:444:25: warning: ‘strncpy’ forming offset [27, 51] is out of the bounds [0, 26] [-Warray-bounds]
if (outStrings) strncpy(&outStrings[i*MAX_ENUM_STRING_SIZE], inStrings[i], MAX_ENUM_STRING_SIZE-1);
So the compiler thinks I am passing an array of 26 byes, and so complains that I am writing to bytes 27 to 51. But actually I know that the array I am writing to is not really just 26 bytes long, it is actually larger. How do I communicate that knowledge to the compiler?
Mark
Sent from my iPhone
On Sep 16, 2020, at 8:37 PM, Chris Johns <chrisj at rtems.org> wrote:
On 17/9/20 11:28 am, Mark Rivers wrote:
That article is interesting but is about string truncation. The warnings I am worried about are actually incorrectly flagging buffer overflow. I am hoping there is a cast or other method to avoid them.
OK, I am not across the full context. Reviewing the suggested patch the post
hinted that GCC looks for the terminating nul being written:
if (outStrings) {
strncpy(&outStrings[i*MAX_ENUM_STRING_SIZE], inStrings[i], MAX_ENUM_STRING_SIZE);
outStrings[i*MAX_ENUM_STRING_SIZE + MAX_ENUM_STRING_SIZE-1] = '\0';
}
New string functions in base don’t really help me since asyn needs to build, preferably without such warnings, on older versions of base.
That makes things harder.
Chris
- Replies:
- Re: Compiler warning question Johnson, Andrew N. via Core-talk
- References:
- Compiler warning question Mark Rivers via Core-talk
- Re: Compiler warning question Torsten Bögershausen via Core-talk
- Re: Compiler warning question Ralph Lange via Core-talk
- Re: Compiler warning question Michael Davidsaver via Core-talk
- Re: Compiler warning question Chris Johns via Core-talk
- Re: Compiler warning question Mark Rivers via Core-talk
- Re: Compiler warning question Chris Johns via Core-talk
- Navigate by Date:
- Prev:
Re: Compiler warning question Chris Johns via Core-talk
- Next:
[Bug 1895908] [NEW] epicsStackTraceTest fails on linux-aarch64 Andrew Johnson via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Compiler warning question Chris Johns via Core-talk
- Next:
Re: Compiler warning question Johnson, Andrew N. via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
|