Skip to content

Commit

Permalink
Fixed undefined behaviour in left shift of int value
Browse files Browse the repository at this point in the history
Found by UndefinedBehaviorSanitizer:

src/nxt_random.c:151:31: runtime error: left shift of 140 by 24 places cannot be represented in type 'int'
    #0 0x104f78968 in nxt_random nxt_random.c:151
    nginx#1 0x104f58a98 in nxt_shm_open nxt_port_memory.c:377
    nginx#2 0x10503e24c in nxt_controller_conf_send nxt_controller.c:617
    nginx#3 0x105041154 in nxt_controller_process_request nxt_controller.c:1109
    nginx#4 0x104fcdc48 in nxt_event_engine_start nxt_event_engine.c:542
    nginx#5 0x104f27254 in main nxt_main.c:35
    nginx#6 0x180fbd0dc  (<unknown module>)

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior src/nxt_random.c:151:31

Reviewed-by: Andrew Clayton <[email protected]>
  • Loading branch information
andrey-zelenkov committed Feb 22, 2024
1 parent 65a80df commit 658d5c0
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/nxt_random.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,10 @@ nxt_random(nxt_random_t *r)
nxt_random_stir(r);
}

val = nxt_random_byte(r) << 24;
val |= nxt_random_byte(r) << 16;
val |= nxt_random_byte(r) << 8;
val |= nxt_random_byte(r);
val = (uint32_t) nxt_random_byte(r) << 24;
val |= (uint32_t) nxt_random_byte(r) << 16;
val |= (uint32_t) nxt_random_byte(r) << 8;
val |= (uint32_t) nxt_random_byte(r);

return val;
}
Expand Down

0 comments on commit 658d5c0

Please sign in to comment.