Sfoglia il codice sorgente

Fixup #17638: ignore EINVAL from FreeBSD jails without ::1

In my testing, an IPv6-only FreeBSD jail without ::1 returned EINVAL
from tor_ersatz_socketpair. Let's not fail the unit test because of
this - it would only ever use tor_socketpair() anyway.
teor (Tim Wilson-Brown) 8 anni fa
parent
commit
f19d6b81c8
1 ha cambiato i file con 5 aggiunte e 0 eliminazioni
  1. 5 0
      src/test/test_util.c

+ 5 - 0
src/test/test_util.c

@@ -4425,6 +4425,11 @@ test_util_socketpair(void *arg)
    * Otherwise, we risk exposing a socketpair on a routable IP address. (Some
    * BSD jails use a routable address for localhost. Fortunately, they have
    * the real AF_UNIX socketpair.) */
+  if (-socketpair_result == SOCK_ERRNO(EINVAL)) {
+    /* In my testing, an IPv6-only FreeBSD jail without ::1 returned EINVAL.
+     * Assume we're on a machine without 127.0.0.1 or ::1 and give up now. */
+    goto done;
+  }
   tt_int_op(0, OP_EQ, socketpair_result);
   tt_assert(SOCKET_OK(fds[0]));
   tt_assert(SOCKET_OK(fds[1]));