dhcpd: fix an improper widening conversion
We wanted to detect when tv_sec = unsigned1 - unsigned2 underflows by looking at tv_sec's sign. But if tv_sec is long and it is wider than unsigned, we get unsigned -> long conversion which is in this case never negative. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
64b744997e
commit
936c401077
@ -413,7 +413,8 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
||||
|
||||
max_sock = udhcp_sp_fd_set(&rfds, server_socket);
|
||||
if (server_config.auto_time) {
|
||||
tv.tv_sec = timeout_end - monotonic_sec();
|
||||
/* cast to signed is essential if tv_sec is wider than int */
|
||||
tv.tv_sec = (int)(timeout_end - monotonic_sec());
|
||||
tv.tv_usec = 0;
|
||||
}
|
||||
retval = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user