make asn1bitstr_to_u32() work for sub-32bit bit-strings

IF the ASN1 Bit-string is only 24 bits or even less long,
we might still want to retrieve it as an uint32_t.
diff --git a/src/asn1helpers.c b/src/asn1helpers.c
index 36702c0..3082ddc 100644
--- a/src/asn1helpers.c
+++ b/src/asn1helpers.c
@@ -59,6 +59,14 @@
 
 uint32_t asn1bitstr_to_u32(const BIT_STRING_t *in)
 {
-	OSMO_ASSERT(in && in->size >= sizeof(uint32_t));
-	return *(uint32_t *)in->buf;
+	uint32_t ret = 0;
+	int i;
+
+	for (i = 0; i < 4; i++) {
+		if (in->size < i)
+			break;
+		ret <<= 8;
+		ret |= in->buf[i];
+	}
+	return ret;
 }