mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-08-25 08:33:38 +03:00
Fix SEC shard count integer overflow (#2892)
Limit hpa_sec_nshards and experimental_pac_sec_nshards to 255 to prevent uint8_t overflow and multiplication overflow during initialization.
This commit is contained in:
parent
6957341f19
commit
2b63cdbdc9
2 changed files with 5 additions and 4 deletions
|
|
@ -937,8 +937,8 @@ malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS],
|
||||||
CONF_CONTINUE;
|
CONF_CONTINUE;
|
||||||
}
|
}
|
||||||
CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.nshards,
|
CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.nshards,
|
||||||
"hpa_sec_nshards", 0, 0, CONF_CHECK_MIN,
|
"hpa_sec_nshards", 0, 255, CONF_CHECK_MIN,
|
||||||
CONF_DONT_CHECK_MAX, true);
|
CONF_CHECK_MAX, true);
|
||||||
CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_alloc,
|
CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_alloc,
|
||||||
"hpa_sec_max_alloc", PAGE,
|
"hpa_sec_max_alloc", PAGE,
|
||||||
USIZE_GROW_SLOW_THRESHOLD, CONF_CHECK_MIN,
|
USIZE_GROW_SLOW_THRESHOLD, CONF_CHECK_MIN,
|
||||||
|
|
@ -947,8 +947,8 @@ malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS],
|
||||||
"hpa_sec_max_bytes", SEC_OPTS_MAX_BYTES_DEFAULT, 0,
|
"hpa_sec_max_bytes", SEC_OPTS_MAX_BYTES_DEFAULT, 0,
|
||||||
CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, true);
|
CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, true);
|
||||||
CONF_HANDLE_SIZE_T(opt_pac_sec_opts.nshards,
|
CONF_HANDLE_SIZE_T(opt_pac_sec_opts.nshards,
|
||||||
"experimental_pac_sec_nshards", 0, 0,
|
"experimental_pac_sec_nshards", 0, 255,
|
||||||
CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, true);
|
CONF_CHECK_MIN, CONF_CHECK_MAX, true);
|
||||||
CONF_HANDLE_SIZE_T(opt_pac_sec_opts.max_alloc,
|
CONF_HANDLE_SIZE_T(opt_pac_sec_opts.max_alloc,
|
||||||
"experimental_pac_sec_max_alloc", PAGE,
|
"experimental_pac_sec_max_alloc", PAGE,
|
||||||
USIZE_GROW_SLOW_THRESHOLD, CONF_CHECK_MIN,
|
USIZE_GROW_SLOW_THRESHOLD, CONF_CHECK_MIN,
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ sec_init(tsdn_t *tsdn, sec_t *sec, base_t *base, const sec_opts_t *opts) {
|
||||||
sec->opts.max_alloc = 0;
|
sec->opts.max_alloc = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
assert(opts->nshards <= 255);
|
||||||
assert(opts->max_alloc >= PAGE);
|
assert(opts->max_alloc >= PAGE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue