iuup: Fix signed/unsigned loop counter control flow issue

The use of an unsinged integer as for loop counter variable doesn't
work when counting down and comparing with >= 0.  The existing code
would be an infinite loop if it wasn't for the (data dependent) break
condition:

>>>     CID 243259:  Control flow issues  (NO_EFFECT)
>>>     This greater-than-or-equal-to-zero comparison of an unsigned value is always true. "i >= 0U".
572             for (i = 15; i >= 0; i--) {
573                     if (match_mask & (1<<i)) {
574                             iui->mode_version = i;
575                             break;
576                     }

Change-Id: I019d0f0d8f2b167575a2883a13cca692c96961cf
Closes: CID#243259
This commit is contained in:
Harald Welte 2021-12-24 11:35:57 +01:00
parent c809f4e494
commit 29814a5374
1 changed files with 1 additions and 1 deletions

View File

@ -493,7 +493,7 @@ static bool iuup_rx_initialization(struct osmo_iuup_instance *iui, struct osmo_i
struct iuup_ctrl_init_tail *itail;
enum iuup_error_cause err_cause;
uint8_t num_rfci = 0;
unsigned int i;
int i;
bool is_last;
uint16_t remote_mask, match_mask;
struct osmo_iuup_tnl_prim *resp;