]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: errors: invalid use of memprintf in startup_logs_init()
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 5 Apr 2023 14:18:40 +0000 (16:18 +0200)
committerWilliam Lallemand <wlallemand@haproxy.org>
Wed, 5 Apr 2023 15:06:38 +0000 (17:06 +0200)
commitb28ded19a496b522568285831555748da0d40615
tree4f53a88ce501bc7d84a680be9f48db595af2ded2
parentb4e651f12f90021c7f92f7b31999315206121eb3
BUG/MINOR: errors: invalid use of memprintf in startup_logs_init()

On startup/reload, startup_logs_init() will try to export startup logs shm
filedescriptor through the internal HAPROXY_STARTUPLOGS_FD env variable.

While memprintf() is used to prepare the string to be exported via
setenv(), str_fd argument (first argument passed to memprintf()) could
be non NULL as a result of HAPROXY_STARTUPLOGS_FD env variable being
already set.

Indeed: str_fd is already used earlier in the function to store the result
of getenv("HAPROXY_STARTUPLOGS_FD").

The issue here is that memprintf() is designed to free the 'out' argument
if out != NULL, and here we don't expect str_fd to be freed since it was
provided by getenv() and would result in memory violation.

To prevent any invalid free, we must ensure that str_fd is set to NULL
prior to calling memprintf().

This must be backported in 2.7 with eba6a54cd4 ("MINOR: logs: startup-logs
can use a shm for logging the reload")
src/errors.c