| Index: patches/nspr-overflow.patch
|
| diff --git a/patches/nspr-overflow.patch b/patches/nspr-overflow.patch
|
| deleted file mode 100644
|
| index 8e696ca5293da5f8fa2b3a940fb03f3321572064..0000000000000000000000000000000000000000
|
| --- a/patches/nspr-overflow.patch
|
| +++ /dev/null
|
| @@ -1,99 +0,0 @@
|
| -diff --git a/nspr/lib/ds/plarena.c b/nspr/lib/ds/plarena.c
|
| -index 95e1931..689496d 100644
|
| ---- a/nspr/lib/ds/plarena.c
|
| -+++ b/nspr/lib/ds/plarena.c
|
| -@@ -93,6 +93,9 @@ PR_IMPLEMENT(void) PL_InitArenaPool(
|
| - pool->mask = PR_BITMASK(PR_CeilingLog2(align));
|
| -
|
| - pool->first.next = NULL;
|
| -+ /* Set all three addresses in pool->first to the same dummy value.
|
| -+ * These addresses are only compared with each other, but never
|
| -+ * dereferenced. */
|
| - pool->first.base = pool->first.avail = pool->first.limit =
|
| - (PRUword)PL_ARENA_ALIGN(pool, &pool->first + 1);
|
| - pool->current = &pool->first;
|
| -@@ -144,10 +147,14 @@ PR_IMPLEMENT(void *) PL_ArenaAllocate(PLArenaPool *pool, PRUint32 nb)
|
| - {
|
| - PLArena *a;
|
| - char *rp; /* returned pointer */
|
| -+ PRUint32 nbOld;
|
| -
|
| - PR_ASSERT((nb & pool->mask) == 0);
|
| -
|
| -+ nbOld = nb;
|
| - nb = (PRUword)PL_ARENA_ALIGN(pool, nb); /* force alignment */
|
| -+ if (nb < nbOld)
|
| -+ return NULL;
|
| -
|
| - /* attempt to allocate from arenas at pool->current */
|
| - {
|
| -@@ -208,6 +215,7 @@ PR_IMPLEMENT(void *) PL_ArenaAllocate(PLArenaPool *pool, PRUint32 nb)
|
| - PL_MAKE_MEM_NOACCESS((void*)a->avail, a->limit - a->avail);
|
| - rp = (char *)a->avail;
|
| - a->avail += nb;
|
| -+ PR_ASSERT(a->avail <= a->limit);
|
| - /* the newly allocated arena is linked after pool->current
|
| - * and becomes pool->current */
|
| - a->next = pool->current->next;
|
| -@@ -230,6 +238,8 @@ PR_IMPLEMENT(void *) PL_ArenaGrow(
|
| - {
|
| - void *newp;
|
| -
|
| -+ if (PR_UINT32_MAX - size < incr)
|
| -+ return NULL;
|
| - PL_ARENA_ALLOCATE(newp, pool, size + incr);
|
| - if (newp)
|
| - memcpy(newp, p, size);
|
| -diff --git a/nspr/lib/ds/plarena.h b/nspr/lib/ds/plarena.h
|
| -index 8dcfb3e..3e51f83 100644
|
| ---- a/nspr/lib/ds/plarena.h
|
| -+++ b/nspr/lib/ds/plarena.h
|
| -@@ -139,32 +139,37 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
| - PLArena *_a = (pool)->current; \
|
| - PRUint32 _nb = PL_ARENA_ALIGN(pool, nb); \
|
| - PRUword _p = _a->avail; \
|
| -- PRUword _q = _p + _nb; \
|
| -- if (_q > _a->limit) { \
|
| -+ if (_nb < nb) { \
|
| -+ _p = 0; \
|
| -+ } else if (_nb > (_a->limit - _a->avail)) { \
|
| - _p = (PRUword)PL_ArenaAllocate(pool, _nb); \
|
| - } else { \
|
| -- _a->avail = _q; \
|
| -+ _a->avail += _nb; \
|
| - } \
|
| - p = (void *)_p; \
|
| -- PL_MAKE_MEM_UNDEFINED(p, nb); \
|
| -- PL_ArenaCountAllocation(pool, nb); \
|
| -+ if (p) { \
|
| -+ PL_MAKE_MEM_UNDEFINED(p, nb); \
|
| -+ PL_ArenaCountAllocation(pool, nb); \
|
| -+ } \
|
| - PR_END_MACRO
|
| -
|
| - #define PL_ARENA_GROW(p, pool, size, incr) \
|
| - PR_BEGIN_MACRO \
|
| - PLArena *_a = (pool)->current; \
|
| - PRUint32 _incr = PL_ARENA_ALIGN(pool, incr); \
|
| -- PRUword _p = _a->avail; \
|
| -- PRUword _q = _p + _incr; \
|
| -- if (_p == (PRUword)(p) + PL_ARENA_ALIGN(pool, size) && \
|
| -- _q <= _a->limit) { \
|
| -+ if (_incr < incr) { \
|
| -+ p = NULL; \
|
| -+ } else if (_a->avail == (PRUword)(p) + PL_ARENA_ALIGN(pool, size) && \
|
| -+ _incr <= (_a->limit - _a->avail)) { \
|
| - PL_MAKE_MEM_UNDEFINED((unsigned char *)(p) + size, incr); \
|
| -- _a->avail = _q; \
|
| -+ _a->avail += _incr; \
|
| - PL_ArenaCountInplaceGrowth(pool, size, incr); \
|
| - } else { \
|
| - p = PL_ArenaGrow(pool, p, size, incr); \
|
| - } \
|
| -- PL_ArenaCountGrowth(pool, size, incr); \
|
| -+ if (p) {\
|
| -+ PL_ArenaCountGrowth(pool, size, incr); \
|
| -+ } \
|
| - PR_END_MACRO
|
| -
|
| - #define PL_ARENA_MARK(pool) ((void *) (pool)->current->avail)
|
|
|