|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
From f0c730c5407ec42ff2f416a71f6519cd0e2c0afe Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
Date: Tue, 10 Dec 2013 18:53:03 +0000
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
Subject: [PATCH] util: check for overflow in greedy_realloc()
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
(cherry picked from commit 98088803bb2a9f89b7bbc063123dda3343138f18)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
src/shared/util.c | 8 ++++++++
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
1 file changed, 8 insertions(+)
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
diff --git a/src/shared/util.c b/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
1cc3df |
index 1510c5e552..02bae9043c 100644
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
--- a/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+++ b/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
@@ -5832,10 +5832,18 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) {
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
size_t a;
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
void *q;
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+ assert(p);
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+ assert(allocated);
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
if (*allocated >= need)
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
return *p;
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
a = MAX(64u, need * 2);
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+ /* check for overflows */
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+ if (a < need)
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+ return NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
q = realloc(*p, a);
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
if (!q)
|
|
Zbigniew Jędrzejewski-Szmek |
b12ff7 |
return NULL;
|