neels has submitted this change. ( 
https://gerrit.osmocom.org/c/libosmocore/+/29122 )

Change subject: Revert "Add function to guess AF_UNSPEC address"
......................................................................

Revert "Add function to guess AF_UNSPEC address"

This reverts commit a4063efa7deb6632c228037c47effca22ad0f781.

Reason for revert: It is not possible to guess the IP address
family from uninitialized memory. This function simply glorifies
random noise into an IPv6 address. It makes no sense to have it.

Change-Id: Ifadd614604cf9d0c2ed1a405493c1c3fcb37ae23
---
M include/osmocom/core/sockaddr_str.h
M src/sockaddr_str.c
2 files changed, 2 insertions(+), 35 deletions(-)

Approvals:
  neels: Looks good to me, approved
  Jenkins Builder: Verified

Objections:
  msuraev: I would prefer this is not merged as is



diff --git a/include/osmocom/core/sockaddr_str.h 
b/include/osmocom/core/sockaddr_str.h
index a46ad59..f474fa0 100644
--- a/include/osmocom/core/sockaddr_str.h
+++ b/include/osmocom/core/sockaddr_str.h
@@ -41,7 +41,6 @@
  */

 int osmo_ip_str_type(const char *ip);
-unsigned osmo_sockaddr_guess_unspec(const struct sockaddr *src);

 struct osmo_sockaddr_str {
        /*! AF_INET for IPv4 address, or AF_INET6 for IPv6 address. */
diff --git a/src/sockaddr_str.c b/src/sockaddr_str.c
index 70927a7..9f1e897 100644
--- a/src/sockaddr_str.c
+++ b/src/sockaddr_str.c
@@ -184,38 +184,6 @@
        return AF_UNSPEC;
 }

-/*! Guess whether struct sockaddr with AF_UNSPEC family has valid IPv4 or IPv6 
address.
- * The IPv6 is tried first to take into account "IPv4 mapped addresses".
- * \param[in] src  Generic struct sockaddr pointer.
- * \return AF_INET or AF_INET6, AF_UNSPEC or original sa_family which are 
unsigned type according to <sys/socket.h>.
- */
-unsigned osmo_sockaddr_guess_unspec(const struct sockaddr *src)
-{
-       int rc;
-       struct osmo_sockaddr_str sa;
-       struct osmo_sockaddr_str *tmp = &sa;
-       const struct sockaddr_in6 *src6 = (const struct sockaddr_in6 *)src;
-       const struct sockaddr_in *src4 = (const struct sockaddr_in *)src;
-
-       if (!src)
-               return AF_UNSPEC;
-
-       if (src->sa_family != AF_UNSPEC)
-               return src->sa_family;
-
-       /* IPv6? */
-       rc = osmo_sockaddr_str_from_in6_addr(tmp, &src6->sin6_addr, 
osmo_ntohs(src6->sin6_port));
-       if (rc == 0 && osmo_ip_str_type(tmp->ip) == AF_INET6)
-               return AF_INET6;
-
-       /* IPv4? */
-       rc = osmo_sockaddr_str_from_in_addr(tmp, &src4->sin_addr, 
osmo_ntohs(src4->sin_port));
-       if (rc == 0 && osmo_ip_str_type(tmp->ip) == AF_INET)
-               return AF_INET;
-
-       return AF_UNSPEC;
-}
-
 /*! Safely copy the given ip string to sockaddr_str, classify to AF_INET or 
AF_INET6.
  * Data will be written to sockaddr_str even if an error is returned.
  * \param[out] sockaddr_str  The instance to copy to.
@@ -349,7 +317,7 @@
                return -ENOSPC;
        if (!src)
                return -EINVAL;
-       if (src->sin_family != AF_INET && osmo_sockaddr_guess_unspec((const 
struct sockaddr *)src) != AF_INET)
+       if (src->sin_family != AF_INET)
                return -EINVAL;
        return osmo_sockaddr_str_from_in_addr(sockaddr_str, &src->sin_addr, 
osmo_ntohs(src->sin_port));
 }
@@ -365,7 +333,7 @@
                return -ENOSPC;
        if (!src)
                return -EINVAL;
-       if (src->sin6_family != AF_INET6 && osmo_sockaddr_guess_unspec((const 
struct sockaddr *)src) != AF_INET6)
+       if (src->sin6_family != AF_INET6)
                return -EINVAL;
        return osmo_sockaddr_str_from_in6_addr(sockaddr_str, &src->sin6_addr, 
osmo_ntohs(src->sin6_port));
 }

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/29122
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ifadd614604cf9d0c2ed1a405493c1c3fcb37ae23
Gerrit-Change-Number: 29122
Gerrit-PatchSet: 2
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: msuraev <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-CC: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to