Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2023-04-24 | Don't conflate the error variable in nxt_kqueue_poll(). | Andrew Clayton | 1 | -3/+4 | |
In nxt_kqueue_poll() error is declared as a nxt_bool_t aka unsigned int (on x86-64 anyway). It is used both as a boolean and as the return storage for a bitwise AND operation. This has potential to go awry. If nxt_bool_t was changed to be a u8 then we would have the following issue gcc12 -c -pipe -fPIC -fvisibility=hidden -O -W -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wmissing-prototypes -Werror -g -O2 -I src -I build -I/usr/local/include -o build/src/nxt_kqueue_engine.o -MMD -MF build/src/nxt_kqueue_engine.dep -MT build/src/nxt_kqueue_engine.o src/nxt_kqueue_engine.c src/nxt_kqueue_engine.c: In function 'nxt_kqueue_poll': src/nxt_kqueue_engine.c:728:17: error: overflow in conversion from 'int' to 'nxt_bool_t' {aka 'unsigned char'} changes value from '(int)kev->flags & 16384' to '0' [-Werror=overflow] 728 | error = (kev->flags & EV_ERROR); | ^ cc1: all warnings being treated as errors EV_ERROR has the value 16384, after the AND operation error holds 16384, however this overflows and wraps around (64 times) exactly to 0. With nxt_bool_t defined as a u32, we would have a similar issue if EV_ERROR ever became UINT_MAX + 1 (or a multiple thereof)... Rather than conflating the use of error, keep error as a boolean (it is used further down the function) but do the AND operation inside the if (). Reviewed-by: Alejandro Colomar <alx@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com> | |||||
2020-03-04 | The kqueue EOF flag might be ignored on some conditions. | Igor Sysoev | 1 | -2/+2 | |
If kqueue reported both the EVFILT_READ and the EVFILT_WRITE events for the socket but only the former had the EV_EOF flag set, the flag was silently ignored. | |||||
2019-10-03 | Ignoring EINTR error in kqueue. | Igor Sysoev | 1 | -1/+4 | |
2019-03-11 | Style. | Andrey Zelenkov | 1 | -1/+1 | |
2018-09-20 | Added SSL/TLS support on connection level. | Igor Sysoev | 1 | -14/+12 | |
2018-03-05 | Reduced number of critical log levels. | Valentin Bartenev | 1 | -20/+18 | |
2017-09-14 | Fixed textual socket name lengths and Unix domain sockaddr length. | Igor Sysoev | 1 | -12/+8 | |
2017-06-14 | nxt_event_conn_... functions and structures have been renamed | Igor Sysoev | 1 | -59/+58 | |
to nxt_conn_... | |||||
2017-06-06 | C99 style declaration of connection states. | Igor Sysoev | 1 | -1/+1 | |
2017-06-06 | Optimization of kqueue event processing on connection close. | Igor Sysoev | 1 | -3/+12 | |
2017-05-31 | Skeleton of router configuration and request processing. | Igor Sysoev | 1 | -1/+5 | |
2017-03-09 | Processes refactoring. | Igor Sysoev | 1 | -3/+3 | |
The cycle has been renamed to the runtime. | |||||
2017-02-22 | I/O operations refactoring. | Igor Sysoev | 1 | -7/+6 | |
2017-02-07 | Event engines refactoring. | Igor Sysoev | 1 | -262/+219 | |
2017-01-31 | Event engine timers refactoring. | Igor Sysoev | 1 | -1/+1 | |
2017-01-30 | nxt_event_timer has been renamed to nxt_timer. | Igor Sysoev | 1 | -1/+1 | |
2017-01-27 | Work queues refactoring. | Igor Sysoev | 1 | -15/+14 | |
2017-01-23 | Introducing tasks. | Igor Sysoev | 1 | -66/+68 | |