Copilot commented on code in PR #12903:
URL: https://github.com/apache/trafficserver/pull/12903#discussion_r2831891904


##########
src/api/InkAPITest.cc:
##########
@@ -892,7 +892,14 @@ synserver_delete(SocketServer *s)
 static int
 synserver_vc_refuse(TSCont contp, TSEvent event, void *data)
 {
-  TSAssert((event == TS_EVENT_NET_ACCEPT) || (event == 
TS_EVENT_NET_ACCEPT_FAILED));
+  if (event != TS_EVENT_NET_ACCEPT && event != TS_EVENT_NET_ACCEPT_FAILED) {
+    int err = -static_cast<int>(reinterpret_cast<intptr_t>(data));
+    if (err > 0 && err < 256) {

Review Comment:
   `data` is treated as a negated errno via `reinterpret_cast<intptr_t>(data)` 
and then narrowed to `int` before negation. If `data` is actually a pointer 
(plausible for many events), the narrowing conversion can wrap/lose bits and 
accidentally produce a small positive value (e.g., <256), leading to a 
misleading `strerror()` message. Consider keeping the value as `intptr_t`, 
first checking it’s in a plausible negated-errno range (e.g., `< 0` and `>= 
-4095`), and only then converting to an `int` errno; otherwise log the raw 
integer/pointer value.
   ```suggestion
       intptr_t data_val = reinterpret_cast<intptr_t>(data);
   
       if (data_val < 0 && data_val >= -4095) {
         int err = static_cast<int>(-data_val);
   ```



##########
src/api/InkAPITest.cc:
##########
@@ -913,7 +920,14 @@ synserver_vc_refuse(TSCont contp, TSEvent event, void 
*data)
 static int
 synserver_vc_accept(TSCont contp, TSEvent event, void *data)
 {
-  TSAssert((event == TS_EVENT_NET_ACCEPT) || (event == 
TS_EVENT_NET_ACCEPT_FAILED));
+  if (event != TS_EVENT_NET_ACCEPT && event != TS_EVENT_NET_ACCEPT_FAILED) {
+    int err = -static_cast<int>(reinterpret_cast<intptr_t>(data));
+    if (err > 0 && err < 256) {
+      ink_abort("synserver_vc_accept: unexpected event %d, accept errno: %s 
(%d)", event, strerror(err), err);
+    } else {

Review Comment:
   Same issue here as in `synserver_vc_refuse`: narrowing 
`reinterpret_cast<intptr_t>(data)` to `int` before validating it can 
mis-identify arbitrary pointers as small errno values and print an incorrect 
`strerror()` string. To keep the diagnostics trustworthy, validate `data` as a 
plausible negated errno in `intptr_t` space (e.g., `<0` and within a small 
bound like 4095) before converting/logging it as an errno; otherwise log the 
raw value.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to