summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien DARRAGON <adarragon@haproxy.com>2023-05-11 18:49:14 +0200
committerChristopher Faulet <cfaulet@haproxy.com>2023-05-12 09:45:30 +0200
commitd4dba38ab101eee4cbd0c8d8aa21181825ef6472 (patch)
treebd6c8ec5355f597e16f0eced7bd2d47873ed8bd7
parent4cc2714ae2b40b84b1ee361dceab71a3acd8fb4a (diff)
downloadhaproxy-d4dba38ab101eee4cbd0c8d8aa21181825ef6472.tar.gz
BUG/MINOR: errors: handle malloc failure in usermsgs_put()
usermsgs_buf.size is set without first checking if previous malloc attempt succeeded. This could fool the buffer API into assuming that the buffer is initialized, resulting in unsafe read/writes. Guarding usermsgs_buf.size assignment with the malloc attempt result to make the buffer initialization safe against malloc failures. This partially fixes GH #2130. It should be backported up to 2.6.
-rw-r--r--src/errors.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/errors.c b/src/errors.c
index 2e9d6afb7..5913cb1d5 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -229,7 +229,8 @@ static void usermsgs_put(const struct ist *msg)
/* Allocate the buffer if not already done. */
if (unlikely(b_is_null(&usermsgs_buf))) {
usermsgs_buf.area = malloc(USER_MESSAGES_BUFSIZE * sizeof(char));
- usermsgs_buf.size = USER_MESSAGES_BUFSIZE;
+ if (usermsgs_buf.area)
+ usermsgs_buf.size = USER_MESSAGES_BUFSIZE;
}
if (likely(!b_is_null(&usermsgs_buf))) {