This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 54f97f7319dde4221079312ed58d330ee4ac5c9f Author: Chris McFarlen <[email protected]> AuthorDate: Tue Mar 11 09:24:13 2025 -0500 Fix a few places where inet_ntop could fail (#12095) Co-authored-by: Chris McFarlen <[email protected]> (cherry picked from commit 597cbb80882292fbefda24e7c14a278da6935c0f) --- plugins/experimental/wasm/ats_context.cc | 6 +++--- plugins/lua/ts_lua_client_request.cc | 12 ++++++------ plugins/lua/ts_lua_http.cc | 8 ++++---- plugins/lua/ts_lua_server_request.cc | 21 +++++++++++---------- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/plugins/experimental/wasm/ats_context.cc b/plugins/experimental/wasm/ats_context.cc index cb78b147c2..8e8bd2d7d7 100644 --- a/plugins/experimental/wasm/ats_context.cc +++ b/plugins/experimental/wasm/ats_context.cc @@ -116,13 +116,13 @@ static void print_address(struct sockaddr const *ip, std::string *result) { if (ip != nullptr) { - char cip[128]; - int64_t port = 0; + char cip[128] = ""; + int64_t port = 0; if (ip->sa_family == AF_INET) { const auto *s_sockaddr_in = reinterpret_cast<const struct sockaddr_in *>(ip); inet_ntop(AF_INET, &s_sockaddr_in->sin_addr, cip, sizeof(cip)); port = s_sockaddr_in->sin_port; - } else { + } else if (ip->sa_family == AF_INET6) { const auto *s_sockaddr_in6 = reinterpret_cast<const struct sockaddr_in6 *>(ip); inet_ntop(AF_INET6, &s_sockaddr_in6->sin6_addr, cip, sizeof(cip)); port = s_sockaddr_in6->sin6_port; diff --git a/plugins/lua/ts_lua_client_request.cc b/plugins/lua/ts_lua_client_request.cc index 804a8c8e67..ac2671cf10 100644 --- a/plugins/lua/ts_lua_client_request.cc +++ b/plugins/lua/ts_lua_client_request.cc @@ -762,7 +762,7 @@ static int ts_lua_client_request_client_addr_get_ip(lua_State *L) { struct sockaddr const *client_ip; - char cip[128]; + char cip[128] = ""; ts_lua_http_ctx *http_ctx; GET_HTTP_CONTEXT(http_ctx, L); @@ -775,7 +775,7 @@ ts_lua_client_request_client_addr_get_ip(lua_State *L) } else { if (client_ip->sa_family == AF_INET) { inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)client_ip)->sin_addr, cip, sizeof(cip)); - } else { + } else if (client_ip->sa_family == AF_INET6) { inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)client_ip)->sin6_addr, cip, sizeof(cip)); } @@ -844,9 +844,9 @@ ts_lua_client_request_client_addr_get_addr(lua_State *L) { struct sockaddr const *client_ip; ts_lua_http_ctx *http_ctx; - int port; - int family; - char cip[128]; + int port = 0; + int family = AF_UNSPEC; + char cip[128] = ""; GET_HTTP_CONTEXT(http_ctx, L); @@ -862,7 +862,7 @@ ts_lua_client_request_client_addr_get_addr(lua_State *L) port = ntohs(((struct sockaddr_in *)client_ip)->sin_port); inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)client_ip)->sin_addr, cip, sizeof(cip)); family = AF_INET; - } else { + } else if (client_ip->sa_family == AF_INET6) { port = ntohs(((struct sockaddr_in6 *)client_ip)->sin6_port); inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)client_ip)->sin6_addr, cip, sizeof(cip)); family = AF_INET6; diff --git a/plugins/lua/ts_lua_http.cc b/plugins/lua/ts_lua_http.cc index 92423198e9..4326224f78 100644 --- a/plugins/lua/ts_lua_http.cc +++ b/plugins/lua/ts_lua_http.cc @@ -1061,9 +1061,9 @@ ts_lua_http_get_ssn_remote_addr(lua_State *L) { struct sockaddr const *client_ip; ts_lua_http_ctx *http_ctx; - int port; - int family; - char cip[128]; + int port = 0; + int family = AF_UNSPEC; + char cip[128] = ""; GET_HTTP_CONTEXT(http_ctx, L); @@ -1081,7 +1081,7 @@ ts_lua_http_get_ssn_remote_addr(lua_State *L) port = ntohs(((struct sockaddr_in *)client_ip)->sin_port); inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)client_ip)->sin_addr, cip, sizeof(cip)); family = AF_INET; - } else { + } else if (client_ip->sa_family == AF_INET6) { port = ntohs(((struct sockaddr_in6 *)client_ip)->sin6_port); inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)client_ip)->sin6_addr, cip, sizeof(cip)); family = AF_INET6; diff --git a/plugins/lua/ts_lua_server_request.cc b/plugins/lua/ts_lua_server_request.cc index f787487ad4..26c2897436 100644 --- a/plugins/lua/ts_lua_server_request.cc +++ b/plugins/lua/ts_lua_server_request.cc @@ -18,6 +18,7 @@ #include <netinet/in.h> #include <arpa/inet.h> +#include <sys/socket.h> #include "ts_lua_util.h" #define TS_LUA_CHECK_SERVER_REQUEST_HDR(http_ctx) \ @@ -750,7 +751,7 @@ static int ts_lua_server_request_server_addr_get_ip(lua_State *L) { struct sockaddr const *server_ip; - char sip[128]; + char sip[128] = ""; ts_lua_http_ctx *http_ctx; GET_HTTP_CONTEXT(http_ctx, L); @@ -763,7 +764,7 @@ ts_lua_server_request_server_addr_get_ip(lua_State *L) } else { if (server_ip->sa_family == AF_INET) { inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)server_ip)->sin_addr, sip, sizeof(sip)); - } else { + } else if (server_ip->sa_family == AF_INET6) { inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)server_ip)->sin6_addr, sip, sizeof(sip)); } @@ -832,9 +833,9 @@ ts_lua_server_request_server_addr_get_addr(lua_State *L) { struct sockaddr const *server_ip; ts_lua_http_ctx *http_ctx; - int port; - int family; - char sip[128]; + int port = 0; + int family = AF_UNSPEC; + char sip[128] = ""; GET_HTTP_CONTEXT(http_ctx, L); @@ -850,7 +851,7 @@ ts_lua_server_request_server_addr_get_addr(lua_State *L) port = ntohs(((struct sockaddr_in *)server_ip)->sin_port); inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)server_ip)->sin_addr, sip, sizeof(sip)); family = AF_INET; - } else { + } else if (server_ip->sa_family == AF_INET6) { port = ntohs(((struct sockaddr_in6 *)server_ip)->sin6_port); inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)server_ip)->sin6_addr, sip, sizeof(sip)); family = AF_INET6; @@ -869,9 +870,9 @@ ts_lua_server_request_server_addr_get_nexthop_addr(lua_State *L) { struct sockaddr const *server_ip; ts_lua_http_ctx *http_ctx; - int port; - int family; - char sip[128]; + int port = 0; + int family = AF_UNSPEC; + char sip[128] = ""; GET_HTTP_CONTEXT(http_ctx, L); @@ -887,7 +888,7 @@ ts_lua_server_request_server_addr_get_nexthop_addr(lua_State *L) port = ntohs(((struct sockaddr_in *)server_ip)->sin_port); inet_ntop(AF_INET, (const void *)&((struct sockaddr_in *)server_ip)->sin_addr, sip, sizeof(sip)); family = AF_INET; - } else { + } else if (server_ip->sa_family == AF_INET6) { port = ntohs(((struct sockaddr_in6 *)server_ip)->sin6_port); inet_ntop(AF_INET6, (const void *)&((struct sockaddr_in6 *)server_ip)->sin6_addr, sip, sizeof(sip)); family = AF_INET6;
