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;

Reply via email to