]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
tools/cgsnapshot: fix wrong array size in is_ctrl_on_list()
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Wed, 14 Sep 2022 14:02:22 +0000 (08:02 -0600)
committerTom Hromatka <tom.hromatka@oracle.com>
Wed, 14 Sep 2022 14:02:29 +0000 (08:02 -0600)
GCC throws -Wstringop-overflow warning:

  CC       cgsnapshot-cgsnapshot.o
cgsnapshot.c: In function 'parse_controllers':
cgsnapshot.c:540:53: warning: 'is_ctlr_on_list' accessing 16777216 bytes in a region of size 409600 [-Wstringop-overflow=]
  540 |                         if ((!(flags & FL_LIST) || (is_ctlr_on_list(controllers, cont_names))) &&
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cgsnapshot.c:540:53: note: referencing argument 2 of type 'char (*)[4096]'
cgsnapshot.c:495:12: note: in a call to function 'is_ctlr_on_list'
  495 | static int is_ctlr_on_list(char controllers[CG_CONTROLLER_MAX][FILENAME_MAX],
      |            ^~~~~~~~~~~~~~~
cgsnapshot.c:560:37: warning: 'is_ctlr_on_list' accessing 16777216 bytes in a region of size 409600 [-Wstringop-overflow=]
  560 |         if ((!(flags & FL_LIST) || (is_ctlr_on_list(controllers, cont_names))) &&
      |                                     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cgsnapshot.c:560:37: note: referencing argument 2 of type 'char(*)[4096]'
cgsnapshot.c:495:12: note: in a call to function 'is_ctlr_on_list'
  495 | static int is_ctlr_on_list(char controllers[CG_CONTROLLER_MAX][FILENAME_MAX],
      |            ^~~~~~~~~~~~~~~

the warning is seen due to the mismatch in the array size of the second
argument passed to is_ctlr_on_list() from parse_controllers().  Fix,
this long standing warning by chaging the size of the second function
argument in is_ctrl_on_list().

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
src/tools/cgsnapshot.c

index 4685eed2b1f67f33b7324cf00dca9849be2cacbe..a17d9f1c922951bb91b956879ac3afe3a520ca08 100644 (file)
@@ -493,7 +493,7 @@ err:
 }
 
 static int is_ctlr_on_list(char controllers[CG_CONTROLLER_MAX][FILENAME_MAX],
-                          cont_name_t wanted_conts[FILENAME_MAX])
+                          cont_name_t wanted_conts[CG_CONTROLLER_MAX])
 {
        int i = 0;
        int j = 0;