• Rob Herring's avatar
    libperf xyarray: Add bounds checks to xyarray__entry() · 81886948
    Rob Herring authored
    xyarray__entry() is missing any bounds checking yet often the x and y
    parameters come from external callers. Add bounds checks and an
    unchecked __xyarray__entry().
    
    Committer notes:
    
    Make the 'x' and 'y' arguments to the new xyarray__entry() that does
    bounds check to be of type 'size_t', so that we cover also the case
    where 'x' and 'y' could be negative, which is needed anyway as having
    them as 'int' breaks the build with:
    
      /home/acme/git/perf/tools/lib/perf/include/internal/xyarray.h: In function ‘xyarray__entry’:
      /home/acme/git/perf/tools/lib/perf/include/internal/xyarray.h:28:8: error: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Werror=sign-compare]
         28 |  if (x >= xy->max_x || y >= xy->max_y)
            |        ^~
      /home/acme/git/perf/tools/lib/perf/include/internal/xyarray.h:28:26: error: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Werror=sign-compare]
         28 |  if (x >= xy->max_x || y >= xy->max_y)
            |                          ^~
      cc1: all warnings being treated as errors
    Signed-off-by: default avatarRob Herring <robh@kernel.org>
    Suggested-by: default avatarArnaldo Carvalho de Melo <acme@kernel.org>
    Suggested-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20210414195758.4078803-1-robh@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    81886948
xyarray.h 960 Bytes