Message ID | 20190816064204.6339-2-wagi@monom.org |
---|---|
State | New |
Headers | show |
Series | Fix gcc warning | expand |
On 2019-08-16 08:42:01 [+0200], Daniel Wagner wrote: > Increase the size of the char buffer. gcc 9.1.1 reports: > > src/pmqtest/pmqtest.c: In function ‘main’: > src/pmqtest/pmqtest.c:46:21: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 8 [-Wformat-overflow=] > 46 | #define SYNCMQ_NAME "/syncmsg%d" > | ^~~~~~~~~~~~ > > src/pmqtest/pmqtest.c:445:3: note: ‘sprintf’ output between 10 and 19 bytes into a destination of size 16 > 445 | sprintf(mqname, SYNCMQ_NAME, i); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Signed-off-by: Daniel Wagner <wagi@monom.org> > --- > src/pmqtest/pmqtest.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c > index a04fc49872bf..20164c8d547f 100644 > --- a/src/pmqtest/pmqtest.c > +++ b/src/pmqtest/pmqtest.c > @@ -440,7 +440,7 @@ int main(int argc, char *argv[]) > goto nomem; > > for (i = 0; i < num_threads; i++) { > - char mqname[16]; > + char mqname[32]; The compiler says, based on SYNCMQ_NAME's size and maximum possible %d we will have 19 bytes max. Why do you change it to 32? Why it is not wrong, one might ask what the extra storage is for. Sebastian
On 8/16/19 5:41 PM, Sebastian Andrzej Siewior wrote: > On 2019-08-16 08:42:01 [+0200], Daniel Wagner wrote: >> Increase the size of the char buffer. gcc 9.1.1 reports: >> >> src/pmqtest/pmqtest.c: In function ‘main’: >> src/pmqtest/pmqtest.c:46:21: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 8 [-Wformat-overflow=] >> 46 | #define SYNCMQ_NAME "/syncmsg%d" >> | ^~~~~~~~~~~~ >> >> src/pmqtest/pmqtest.c:445:3: note: ‘sprintf’ output between 10 and 19 bytes into a destination of size 16 >> 445 | sprintf(mqname, SYNCMQ_NAME, i); >> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> Signed-off-by: Daniel Wagner <wagi@monom.org> >> --- >> src/pmqtest/pmqtest.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c >> index a04fc49872bf..20164c8d547f 100644 >> --- a/src/pmqtest/pmqtest.c >> +++ b/src/pmqtest/pmqtest.c >> @@ -440,7 +440,7 @@ int main(int argc, char *argv[]) >> goto nomem; >> >> for (i = 0; i < num_threads; i++) { >> - char mqname[16]; >> + char mqname[32]; > > The compiler says, based on SYNCMQ_NAME's size and maximum possible %d > we will have 19 bytes max. Why do you change it to 32? Why it is not > wrong, one might ask what the extra storage is for. I was taking the 16 bytes value as reference and doubled it. Indeed, 19 bytes would be a better choice. Let me refresh the series.
diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c index a04fc49872bf..20164c8d547f 100644 --- a/src/pmqtest/pmqtest.c +++ b/src/pmqtest/pmqtest.c @@ -440,7 +440,7 @@ int main(int argc, char *argv[]) goto nomem; for (i = 0; i < num_threads; i++) { - char mqname[16]; + char mqname[32]; sprintf(mqname, SYNCMQ_NAME, i); receiver[i].syncmq = mq_open(mqname, oflag, 0777, &mqstat); @@ -567,7 +567,7 @@ int main(int argc, char *argv[]) } nanosleep(&maindelay, NULL); for (i = 0; i < num_threads; i++) { - char mqname[16]; + char mqname[32]; mq_close(receiver[i].syncmq); sprintf(mqname, SYNCMQ_NAME, i);
Increase the size of the char buffer. gcc 9.1.1 reports: src/pmqtest/pmqtest.c: In function ‘main’: src/pmqtest/pmqtest.c:46:21: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 8 [-Wformat-overflow=] 46 | #define SYNCMQ_NAME "/syncmsg%d" | ^~~~~~~~~~~~ src/pmqtest/pmqtest.c:445:3: note: ‘sprintf’ output between 10 and 19 bytes into a destination of size 16 445 | sprintf(mqname, SYNCMQ_NAME, i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Daniel Wagner <wagi@monom.org> --- src/pmqtest/pmqtest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.21.0