aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorPedro F. Giffuni <pfg@FreeBSD.org>2017-04-22 16:02:40 +0000
committerPedro F. Giffuni <pfg@FreeBSD.org>2017-04-22 16:02:40 +0000
commit780154cbaf05974ce9b991b948a2e645626e55cd (patch)
tree16adc867d5a88d6c140bd7757c5a82bdc93f4139 /usr.sbin
parentf671769766ec4a8c9acc2906705a7dccfb35a5a5 (diff)
downloadsrc-780154cbaf05974ce9b991b948a2e645626e55cd.tar.gz
src-780154cbaf05974ce9b991b948a2e645626e55cd.zip
pmcstat(8); unsign some allocation variables and use reallocarray(3).
Use unsigned values in some internal variables that will be used during allocation. The variables are used in reduced scope and have no chance of becoming negative. Provide bounds checking through reallocarray(3). MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=317284
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/pmcstat/pmcpl_calltree.c12
-rw-r--r--usr.sbin/pmcstat/pmcstat_log.c8
2 files changed, 10 insertions, 10 deletions
diff --git a/usr.sbin/pmcstat/pmcpl_calltree.c b/usr.sbin/pmcstat/pmcpl_calltree.c
index edfe85a57966..0f95ac172668 100644
--- a/usr.sbin/pmcstat/pmcpl_calltree.c
+++ b/usr.sbin/pmcstat/pmcpl_calltree.c
@@ -185,7 +185,7 @@ pmcpl_ct_samples_free(struct pmcpl_ct_sample *samples)
static void
pmcpl_ct_samples_grow(struct pmcpl_ct_sample *samples)
{
- int npmcs;
+ unsigned int npmcs;
/* Enough storage. */
if (pmcstat_npmcs <= samples->npmcs)
@@ -193,7 +193,7 @@ pmcpl_ct_samples_grow(struct pmcpl_ct_sample *samples)
npmcs = samples->npmcs +
max(pmcstat_npmcs - samples->npmcs, PMCPL_CT_GROWSIZE);
- samples->sb = realloc(samples->sb, npmcs * sizeof(unsigned));
+ samples->sb = reallocarray(samples->sb, npmcs, sizeof(unsigned));
if (samples->sb == NULL)
errx(EX_SOFTWARE, "ERROR: out of memory");
bzero((char *)samples->sb + samples->npmcs * sizeof(unsigned),
@@ -226,13 +226,13 @@ pmcpl_ct_samples_root(struct pmcpl_ct_sample *samples)
static void
pmcpl_ct_arc_grow(int cursize, int *maxsize, struct pmcpl_ct_arc **items)
{
- int nmaxsize;
+ unsigned int nmaxsize;
if (cursize < *maxsize)
return;
nmaxsize = *maxsize + max(cursize + 1 - *maxsize, PMCPL_CT_GROWSIZE);
- *items = realloc(*items, nmaxsize * sizeof(struct pmcpl_ct_arc));
+ *items = reallocarray(*items, nmaxsize, sizeof(struct pmcpl_ct_arc));
if (*items == NULL)
errx(EX_SOFTWARE, "ERROR: out of memory");
bzero((char *)*items + *maxsize * sizeof(struct pmcpl_ct_arc),
@@ -247,13 +247,13 @@ pmcpl_ct_arc_grow(int cursize, int *maxsize, struct pmcpl_ct_arc **items)
static void
pmcpl_ct_instr_grow(int cursize, int *maxsize, struct pmcpl_ct_instr **items)
{
- int nmaxsize;
+ unsigned int nmaxsize;
if (cursize < *maxsize)
return;
nmaxsize = *maxsize + max(cursize + 1 - *maxsize, PMCPL_CT_GROWSIZE);
- *items = realloc(*items, nmaxsize * sizeof(struct pmcpl_ct_instr));
+ *items = reallocarray(*items, nmaxsize, sizeof(struct pmcpl_ct_instr));
if (*items == NULL)
errx(EX_SOFTWARE, "ERROR: out of memory");
bzero((char *)*items + *maxsize * sizeof(struct pmcpl_ct_instr),
diff --git a/usr.sbin/pmcstat/pmcstat_log.c b/usr.sbin/pmcstat/pmcstat_log.c
index 26f3615e9b7c..aaca29220c12 100644
--- a/usr.sbin/pmcstat/pmcstat_log.c
+++ b/usr.sbin/pmcstat/pmcstat_log.c
@@ -535,8 +535,8 @@ pmcstat_image_add_symbols(struct pmcstat_image *image, Elf *e,
* Allocate space for the new entries.
*/
firsttime = image->pi_symbols == NULL;
- symptr = realloc(image->pi_symbols,
- sizeof(*symptr) * (image->pi_symcount + nfuncsyms));
+ symptr = reallocarray(image->pi_symbols,
+ image->pi_symcount + nfuncsyms, sizeof(*symptr));
if (symptr == image->pi_symbols) /* realloc() failed. */
return;
image->pi_symbols = symptr;
@@ -587,8 +587,8 @@ pmcstat_image_add_symbols(struct pmcstat_image *image, Elf *e,
* Return space to the system if there were duplicates.
*/
if (newsyms < nfuncsyms)
- image->pi_symbols = realloc(image->pi_symbols,
- sizeof(*symptr) * image->pi_symcount);
+ image->pi_symbols = reallocarray(image->pi_symbols,
+ image->pi_symcount, sizeof(*symptr));
/*
* Keep the list of symbols sorted.