In procmem.c, num_maps and num_pages are declared as
int. Pointers (int*) to these variables are being
passed to functions pm_process_maps and pm_map_pagemap
respectively, both of which expect size_t * argument.
This will lead to problems in 64-bit systems where
size_t and int_t have different size.
To avoid the issue, num_maps and num_pages are declared
as size_t. In addition, loop counters i and j are now
declared as size_t to avoid comparison of signed int with
unsigned int.
Change-Id: I3fc51f9386c9b2d289d34808e19e3811ca4a3dae
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
pm_process_t *proc;
/* maps and such */
- pm_map_t **maps; int num_maps;
+ pm_map_t **maps; size_t num_maps;
struct map_info **mis;
struct map_info *mi;
/* pagemap information */
- uint64_t *pagemap; int num_pages;
+ uint64_t *pagemap; size_t num_pages;
unsigned long address; uint64_t mapentry;
uint64_t count, flags;
int hide_zeros;
/* temporary variables */
- int i, j;
+ size_t i, j;
char *endptr;
int error;
ws = WS_OFF;
compfn = NULL;
hide_zeros = 0;
- for (i = 1; i < argc - 1; i++) {
+ for (i = 1; i < (size_t)(argc - 1); i++) {
if (!strcmp(argv[i], "-w")) { ws = WS_ONLY; continue; }
if (!strcmp(argv[i], "-W")) { ws = WS_RESET; continue; }
if (!strcmp(argv[i], "-m")) { compfn = NULL; continue; }