libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 57f3e09813b2af5a1e7cdd63ce83d968e17d7352
parent 85ae657849685d27b79ae6b14f7248d81ec99d2c
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sat, 14 May 2022 15:20:53 +0300

Return NULL for MHD_CONNECTION_INFO_CLIENT_ADDRESS if information is not available

Pipe or UNIX socket connections may have no client address

Diffstat:
Msrc/microhttpd/connection.c | 16++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -5041,12 +5041,16 @@ MHD_get_connection_info (struct MHD_Connection *connection, return &connection->connection_info_dummy; #endif /* HTTPS_SUPPORT */ case MHD_CONNECTION_INFO_CLIENT_ADDRESS: - memset (&connection->connection_info_dummy.client_addr, 0, - sizeof (connection->connection_info_dummy.client_addr)); - memcpy (&connection->connection_info_dummy.client_addr, - &connection->addr, - connection->addr_len); - return &connection->connection_info_dummy; + if (0 < connection->addr_len) + { + memset (&connection->connection_info_dummy.client_addr, 0, + sizeof (connection->connection_info_dummy.client_addr)); + memcpy (&connection->connection_info_dummy.client_addr, + &connection->addr, + (size_t) connection->addr_len); + return &connection->connection_info_dummy; + } + return NULL; case MHD_CONNECTION_INFO_DAEMON: connection->connection_info_dummy.daemon = connection->daemon; return &connection->connection_info_dummy;