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:
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;