fix undefined behavior with certain left-shift count values

Change-Id: I1b71de28312a56a3b1d27fcfaf0a7b71d5777e6c
diff --git a/libnetutils/ifc_utils.c b/libnetutils/ifc_utils.c
index 0ca5fe6..95a144c 100644
--- a/libnetutils/ifc_utils.c
+++ b/libnetutils/ifc_utils.c
@@ -224,6 +224,11 @@
 {
     in_addr_t mask = 0;
 
+    // C99 (6.5.7): shifts of 32 bits have undefined results
+    if (prefix_length == 0) {
+        return 0;
+    }
+
     mask = ~mask << (32 - prefix_length);
     mask = htonl(mask);