mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-05-28 04:03:29 -04:00
buffer: Change limits for array_mult_safe
- Lower the limit to 1GB on 32bit systems. The limit of 4GB-1 makes no sense on systems that usually don't allow a single process to allocate anything near to this limit. - Increate the limit from 4GB-1 to 4GB on other systems. It makes no difference in protection but makes it much easier to use the limit in other contexts, e.g. if dividing it. Change-Id: I4f95edd7ce2098180aa620a231727217f333a12d Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com> Acked-by: Gert Doering <gert@greenie.muc.de> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1436 Message-Id: <20251212100920.7671-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg35044.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
parent
e5ff824753
commit
2b8149a4fe
2 changed files with 13 additions and 1 deletions
|
|
@ -39,7 +39,7 @@
|
|||
size_t
|
||||
array_mult_safe(const size_t m1, const size_t m2, const size_t extra)
|
||||
{
|
||||
const size_t limit = 0xFFFFFFFF;
|
||||
const size_t limit = ALLOC_SIZE_MAX;
|
||||
unsigned long long res =
|
||||
(unsigned long long)m1 * (unsigned long long)m2 + (unsigned long long)extra;
|
||||
if (unlikely(m1 > limit) || unlikely(m2 > limit) || unlikely(extra > limit)
|
||||
|
|
|
|||
|
|
@ -1044,6 +1044,18 @@ gc_reset(struct gc_arena *a)
|
|||
* Allocate memory to hold a structure
|
||||
*/
|
||||
|
||||
/* When allocating arrays make sure we do not use a excessive amount
|
||||
* of memory.
|
||||
*/
|
||||
#if UINTPTR_MAX <= UINT32_MAX
|
||||
/* 1 GB on 32bit systems, they usually can only allocate 2 GB for the
|
||||
* whole process.
|
||||
*/
|
||||
#define ALLOC_SIZE_MAX (1u << 30)
|
||||
#else
|
||||
#define ALLOC_SIZE_MAX ((size_t)1 << 32) /* 4 GB */
|
||||
#endif
|
||||
|
||||
#define ALLOC_OBJ(dptr, type) \
|
||||
{ \
|
||||
check_malloc_return((dptr) = (type *)malloc(sizeof(type))); \
|
||||
|
|
|
|||
Loading…
Reference in a new issue