diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2022-10-04 14:43:25 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2022-10-06 07:52:09 +0000 |
commit | d9d62102cc41533a5062d29f4abd4b272d71840f (patch) | |
tree | f0222b8431c9ac52d093cdc94b002cc901929283 /include/osmocom/core | |
parent | 486d98404d3e035029c18105580229784a457745 (diff) |
msgb: assert msgb->lXh to be not NULL
When any of l1h, l2h, l2h or l4h is set to NULL (which is the default
for newly allocated message buffers). Then the msgb_lXhlen() functions
will return the address value of msgb->tail. This can lead to unexpected
results at a later point. We should have an OSMO_ASSERT to catch the
problem early.
Change-Id: I1795c559f190713ebbabfbabf3453ab77da46a49
Related: OS#5645
Diffstat (limited to 'include/osmocom/core')
-rw-r--r-- | include/osmocom/core/msgb.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h index 117fcb01..fbf1742e 100644 --- a/include/osmocom/core/msgb.h +++ b/include/osmocom/core/msgb.h @@ -144,6 +144,7 @@ static inline struct msgb *msgb_dequeue_count(struct llist_head *queue, */ static inline unsigned int msgb_l1len(const struct msgb *msgb) { + OSMO_ASSERT(msgb->l1h); return msgb->tail - (uint8_t *)msgb_l1(msgb); } @@ -156,6 +157,7 @@ static inline unsigned int msgb_l1len(const struct msgb *msgb) */ static inline unsigned int msgb_l2len(const struct msgb *msgb) { + OSMO_ASSERT(msgb->l2h); return msgb->tail - (uint8_t *)msgb_l2(msgb); } @@ -168,6 +170,7 @@ static inline unsigned int msgb_l2len(const struct msgb *msgb) */ static inline unsigned int msgb_l3len(const struct msgb *msgb) { + OSMO_ASSERT(msgb->l3h); return msgb->tail - (uint8_t *)msgb_l3(msgb); } @@ -180,6 +183,7 @@ static inline unsigned int msgb_l3len(const struct msgb *msgb) */ static inline unsigned int msgb_l4len(const struct msgb *msgb) { + OSMO_ASSERT(msgb->l4h); return msgb->tail - (uint8_t *)msgb_sms(msgb); } |