Thanks Cristian,

You're right, it's the POSIX function that I was meaning to reference.

I've opted to intercept the null pointer issue in my wrapper function, for now:

@@ -116,6 +116,17 @@ int getaddrinfo(const char *restrict libc_node,
     if (name_override && name_override[0] != '\0') {
         libc_node = name_override;
     }
+    if (libc_node == NULL) {
+        // replace with empty address str, as null ptr is not handled by 
ares_getaddrinfo()
+        if (hints.ai_family == AF_INET) {
+            libc_node = "0.0.0.0";
+        } else {
+            libc_node = "::";
+        }
+        if (getenv("DEBUG")) {
+            fprintf(stderr, __FILE__ ":%d Replaced the null libc_node arg with 
'%s'.\n", __LINE__, libc_node);
+        }
+    }
     const char* local_dev_name = getenv("LOCAL_DEV");
     if (local_dev_name) {
         // requires root privileges, failure to apply is silently ignored

Which functions as desired. And I plan to propose a null-handling patch for ares_getaddrinfo() soon.

Best,
Carson

On 3/14/24 11:35 AM, Cristian Rodríguez wrote:
On Thu, Mar 14, 2024 at 3:37 AM Carson Vandegriffe via c-ares
<c-ares@lists.haxx.se>  wrote:
Hi all,

I've been working on an effort to override some (libc) getaddrinfo()
It is  POSIX that you have to quote.. not the libc manual..

"If nodename is not null, the requested service location is named by
nodename; otherwise, the requested service location is local to the
caller."

It is a bug whatever interpretation is made.. fill a bug report.
-- 
c-ares mailing list
c-ares@lists.haxx.se
https://lists.haxx.se/mailman/listinfo/c-ares

Reply via email to