From 161769f4ece71d5f2f8dd2d14651c8a5d6d11948 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 10 Nov 2017 17:48:13 -0500
Subject: [PATCH] SockAddr: use host endianess for bitwise-shift operations

---
 src/utils.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/utils.cpp b/src/utils.cpp
index 18e946a0..9cd9f492 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -94,7 +94,8 @@ SockAddr::isLoopback() const
 {
     switch (getFamily()) {
     case AF_INET: {
-        uint8_t b1 = (uint8_t)(getIPv4().sin_addr.s_addr >> 24);
+        auto addr_host = ntohl(getIPv4().sin_addr.s_addr);
+        uint8_t b1 = (uint8_t)(addr_host >> 24);
         return b1 == 127;
     }
     case AF_INET6:
@@ -111,10 +112,11 @@ SockAddr::isPrivate() const
         return true;
     }
     switch (getFamily()) {
-    case AF_INET:
+    case AF_INET: {
+        auto addr_host = ntohl(getIPv4().sin_addr.s_addr);
         uint8_t b1, b2;
-        b1 = (uint8_t)(getIPv4().sin_addr.s_addr >> 24);
-        b2 = (uint8_t)((getIPv4().sin_addr.s_addr >> 16) & 0x0ff);
+        b1 = (uint8_t)(addr_host >> 24);
+        b2 = (uint8_t)((addr_host >> 16) & 0x0ff);
         // 10.x.y.z
         if (b1 == 10)
             return true;
@@ -125,6 +127,7 @@ SockAddr::isPrivate() const
         if ((b1 == 192) && (b2 == 168))
             return true;
         return false;
+    }
     case AF_INET6: {
         const uint8_t* addr6 = reinterpret_cast<const uint8_t*>(&getIPv6().sin6_addr);
         if (addr6[0] == 0xfc)
-- 
GitLab