merge in mnc-dr1.5-release history after reset to mnc-dr1.5-dev
diff --git a/dhcp.c b/dhcp.c
index b3f7cb1..bdd984f 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -271,34 +271,21 @@
 
 		if (type)
 			*type = opt->type;
-		/* The size of RFC3442 and RFC5969 options is checked at a later
-		 * stage in the code */
+
 		if (opt->type == 0 ||
 		    opt->type & (STRING | RFC3442 | RFC5969))
 			return 0;
-		/* The code does not use SINT16 / SINT32 together with ARRAY.
-		 * It is however far easier to reason about the code if all
-		 * possible array elements are included, and also does not code
-		 * any additional CPU resources. sizeof(uintXX_t) ==
-		 * sizeof(intXX_t) can be assumed. */
+
 		sz = 0;
-		if (opt->type & (UINT32 | SINT32 | IPV4))
+		if (opt->type & (UINT32 | IPV4))
 			sz = sizeof(uint32_t);
-		else if (opt->type & (UINT16 | SINT16))
+		if (opt->type & UINT16)
 			sz = sizeof(uint16_t);
-		else if (opt->type & UINT8)
+		if (opt->type & UINT8)
 			sz = sizeof(uint8_t);
-		if (opt->type & ARRAY) {
-			/* The result of modulo zero is undefined. There are no
-			 * options defined in this file that do not match one of
-			 * the if-clauses above, so the following is not really
-			 * necessary. However, to avoid confusion and unexpected
-			 * behavior if the defined options are ever extended,
-			 * returning false here seems sensible. */
-			if (!sz) return -1;
-			return (dl % sz == 0) ? 0 : -1;
-		}
-		return (sz == dl) ? 0 : -1;
+		if (opt->type & (IPV4 | ARRAY))
+			return dl % sz;
+		return (dl == sz ? 0 : -1);
 	}
 
 	/* unknown option, so let it pass */