Skip to content

Commit 2da49ab

Browse files
Fixed undefined behaviour in left shift of int value
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 <a.clayton@nginx.com>
1 parent 1b4d50f commit 2da49ab

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/nxt_random.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ nxt_random(nxt_random_t *r)
148148
nxt_random_stir(r);
149149
}
150150

151-
val = nxt_random_byte(r) << 24;
152-
val |= nxt_random_byte(r) << 16;
153-
val |= nxt_random_byte(r) << 8;
154-
val |= nxt_random_byte(r);
151+
val = (uint32_t) nxt_random_byte(r) << 24;
152+
val |= (uint32_t) nxt_random_byte(r) << 16;
153+
val |= (uint32_t) nxt_random_byte(r) << 8;
154+
val |= (uint32_t) nxt_random_byte(r);
155155

156156
return val;
157157
}

0 commit comments

Comments
 (0)