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;
}