Mercurial > hg > nginx-quic
annotate auto/os/linux @ 8460:3974f4e56a4e
Mail: fixed s->arg_start clearing on invalid IMAP commands.
Previously, s->arg_start was left intact after invalid IMAP commands,
and this might result in an argument incorrectly added to the following
command. Similarly, s->backslash was left intact as well, leading
to unneeded backslash removal.
For example (LFs from the client are explicitly shown as "<LF>"):
S: * OK IMAP4 ready
C: a01 login "\<LF>
S: a01 BAD invalid command
C: a0000000000\2 authenticate <LF>
S: a00000000002 aBAD invalid command
The backslash followed by LF generates invalid command with s->arg_start
and s->backslash set, the following command incorrectly treats anything
from the old s->arg_start to the space after the command as an argument,
and removes the backslash from the tag. If there is no space, s->arg_end
will be NULL.
Both things seem to be harmless though. In particular:
- This can be used to provide an incorrect argument to a command without
arguments. The only command which seems to look at the single argument
is AUTHENTICATE, and it checks the argument length before trying to
access it.
- Backslash removal uses the "end" pointer, and stops due to "src < end"
condition instead of scanning all the process memory if s->arg_end is
NULL (and arg[0].len is huge).
- There should be no backslashes in unquoted strings.
An obvious fix is to clear s->arg_start and s->backslash on invalid commands,
similarly to how it is done in POP3 parsing (added in 810:e3aa8f305d21) and
SMTP parsing.
This, however, makes it clear that s->arg_start handling in the "done"
label is wrong: s->arg_start cannot be legitimately set there, as it
is expected to be cleared in all possible cases when the "done" label is
reached. The relevant code is dead and will be removed by the following
change.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 19 May 2021 03:13:20 +0300 |
parents | e2e9e0fae747 |
children | 7f95010f10b7 c0a432c0301b |
rev | line source |
---|---|
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
1 |
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
2 # Copyright (C) Igor Sysoev |
4412 | 3 # Copyright (C) Nginx, Inc. |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
4 |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
5 |
509 | 6 have=NGX_LINUX . auto/have_headers |
455 | 7 |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 CORE_INCS="$UNIX_INCS" |
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS" |
249
2a0540287298
nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
248
diff
changeset
|
10 CORE_SRCS="$UNIX_SRCS $LINUX_SRCS" |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
455 | 12 ngx_spacer=' |
13 ' | |
283
8f65fee68270
nginx-0.0.2-2004-03-10-20:55:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
259
diff
changeset
|
14 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
15 cc_aux_flags="$CC_AUX_FLAGS" |
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
16 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
17 |
461 | 18 |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
19 # Linux kernel version |
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
20 |
1927
220c2515a9c9
use uname instead of often outdated header file
Igor Sysoev <igor@sysoev.ru>
parents:
1926
diff
changeset
|
21 version=$((`uname -r \ |
4002
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
22 | sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \ |
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
23 \1*256*256+\2*256+\3/p' \ |
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
24 -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`)) |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
25 |
477 | 26 version=${version:-0} |
27 | |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
28 |
3286
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
29 # posix_fadvise64() had been implemented in 2.5.60 |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
30 |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
31 if [ $version -lt 132412 ]; then |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
32 have=NGX_HAVE_POSIX_FADVISE . auto/nohave |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
33 fi |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
34 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
35 # epoll, EPOLLET version |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
36 |
455 | 37 ngx_feature="epoll" |
469 | 38 ngx_feature_name="NGX_HAVE_EPOLL" |
591 | 39 ngx_feature_run=yes |
455 | 40 ngx_feature_incs="#include <sys/epoll.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
41 ngx_feature_path= |
455 | 42 ngx_feature_libs= |
4543
51744fa997c7
Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
43 ngx_feature_test="int efd = 0; |
455 | 44 struct epoll_event ee; |
45 ee.events = EPOLLIN|EPOLLOUT|EPOLLET; | |
46 ee.data.ptr = NULL; | |
6622
e393c0bf53d3
Configure: fix build with -Werror=unused-but-set-variable.
Piotr Sikora <piotrsikora@google.com>
parents:
6126
diff
changeset
|
47 (void) ee; |
455 | 48 efd = epoll_create(100); |
49 if (efd == -1) return 1;" | |
50 . auto/feature | |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
51 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
52 if [ $ngx_found = yes ]; then |
469 | 53 have=NGX_HAVE_CLEAR_EVENT . auto/have |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
54 CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
55 EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
56 EVENT_FOUND=YES |
5372
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
57 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
58 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
59 # EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
60 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
61 ngx_feature="EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
62 ngx_feature_name="NGX_HAVE_EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
63 ngx_feature_run=no |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
64 ngx_feature_incs="#include <sys/epoll.h>" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
65 ngx_feature_path= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
66 ngx_feature_libs= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
67 ngx_feature_test="int efd = 0, fd = 0; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
68 struct epoll_event ee; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
69 ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
70 ee.data.ptr = NULL; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
71 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
72 . auto/feature |
6635
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
73 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
74 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
75 # EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
76 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
77 ngx_feature="EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
78 ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
79 ngx_feature_run=no |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
80 ngx_feature_incs="#include <sys/epoll.h>" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
81 ngx_feature_path= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
82 ngx_feature_libs= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
83 ngx_feature_test="int efd = 0, fd = 0; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
84 struct epoll_event ee; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
85 ee.events = EPOLLIN|EPOLLEXCLUSIVE; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
86 ee.data.ptr = NULL; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
87 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
88 . auto/feature |
8394
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
89 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
90 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
91 # eventfd() |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
92 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
93 ngx_feature="eventfd()" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
94 ngx_feature_name="NGX_HAVE_EVENTFD" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
95 ngx_feature_run=no |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
96 ngx_feature_incs="#include <sys/eventfd.h>" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
97 ngx_feature_path= |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
98 ngx_feature_libs= |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
99 ngx_feature_test="(void) eventfd(0, 0)" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
100 . auto/feature |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
101 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
102 if [ $ngx_found = yes ]; then |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
103 have=NGX_HAVE_SYS_EVENTFD_H . auto/have |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
104 fi |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
105 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
106 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
107 if [ $ngx_found = no ]; then |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
108 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
109 ngx_feature="eventfd() (SYS_eventfd)" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
110 ngx_feature_incs="#include <sys/syscall.h>" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
111 ngx_feature_test="(void) SYS_eventfd" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
112 . auto/feature |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
113 fi |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
114 fi |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
115 |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
116 |
5356
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
117 # O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
118 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
119 ngx_feature="O_PATH" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
120 ngx_feature_name="NGX_HAVE_O_PATH" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
121 ngx_feature_run=no |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
122 ngx_feature_incs="#include <sys/types.h> |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
123 #include <sys/stat.h> |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
124 #include <fcntl.h>" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
125 ngx_feature_path= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
126 ngx_feature_libs= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
127 ngx_feature_test="int fd; struct stat sb; |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
128 fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW); |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
129 if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
130 . auto/feature |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
131 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
132 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
133 # sendfile() |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
134 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
135 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" |
455 | 136 ngx_feature="sendfile()" |
469 | 137 ngx_feature_name="NGX_HAVE_SENDFILE" |
591 | 138 ngx_feature_run=yes |
139 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 140 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
141 ngx_feature_path= |
455 | 142 ngx_feature_libs= |
143 ngx_feature_test="int s = 0, fd = 1; | |
144 ssize_t n; off_t off = 0; | |
591 | 145 n = sendfile(s, fd, &off, 1); |
146 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 147 . auto/feature |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
148 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
149 if [ $ngx_found = yes ]; then |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
150 CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS" |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
151 fi |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
152 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
153 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
154 # sendfile64() |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
155 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
156 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
455 | 157 ngx_feature="sendfile64()" |
469 | 158 ngx_feature_name="NGX_HAVE_SENDFILE64" |
591 | 159 ngx_feature_run=yes |
160 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 161 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
162 ngx_feature_path= |
455 | 163 ngx_feature_libs= |
164 ngx_feature_test="int s = 0, fd = 1; | |
165 ssize_t n; off_t off = 0; | |
591 | 166 n = sendfile(s, fd, &off, 1); |
167 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 168 . auto/feature |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
169 |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
170 |
455 | 171 ngx_include="sys/prctl.h"; . auto/include |
172 | |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
173 # prctl(PR_SET_DUMPABLE) |
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
174 |
455 | 175 ngx_feature="prctl(PR_SET_DUMPABLE)" |
469 | 176 ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" |
455 | 177 ngx_feature_run=yes |
178 ngx_feature_incs="#include <sys/prctl.h>" | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
179 ngx_feature_path= |
455 | 180 ngx_feature_libs= |
181 ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" | |
182 . auto/feature | |
577 | 183 |
184 | |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
185 # prctl(PR_SET_KEEPCAPS) |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
186 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
187 ngx_feature="prctl(PR_SET_KEEPCAPS)" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
188 ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
189 ngx_feature_run=yes |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
190 ngx_feature_incs="#include <sys/prctl.h>" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
191 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
192 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
193 ngx_feature_test="if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1) return 1" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
194 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
195 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
196 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
197 # capabilities |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
198 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
199 ngx_feature="capabilities" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
200 ngx_feature_name="NGX_HAVE_CAPABILITIES" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
201 ngx_feature_run=no |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
202 ngx_feature_incs="#include <linux/capability.h> |
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
203 #include <sys/syscall.h>" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
204 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
205 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
206 ngx_feature_test="struct __user_cap_data_struct data; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
207 struct __user_cap_header_struct header; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
208 |
7176
7f28b61c92f0
Fixed capabilities version.
Roman Arutyunyan <arut@nginx.com>
parents:
7175
diff
changeset
|
209 header.version = _LINUX_CAPABILITY_VERSION_1; |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
210 data.effective = CAP_TO_MASK(CAP_NET_RAW); |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
211 data.permitted = 0; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
212 |
7327
f7e79596baf2
Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents:
7176
diff
changeset
|
213 (void) header; |
f7e79596baf2
Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents:
7176
diff
changeset
|
214 (void) data; |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
215 (void) SYS_capset" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
216 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
217 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
218 |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
219 # crypt_r() |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
220 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
221 ngx_feature="crypt_r()" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
222 ngx_feature_name="NGX_HAVE_GNU_CRYPT_R" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
223 ngx_feature_run=no |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
224 ngx_feature_incs="#include <crypt.h>" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
225 ngx_feature_path= |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
226 ngx_feature_libs=-lcrypt |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
227 ngx_feature_test="struct crypt_data cd; |
4543
51744fa997c7
Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
228 crypt_r(\"key\", \"salt\", &cd);" |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
229 . auto/feature |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
230 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
231 |
2615 | 232 ngx_include="sys/vfs.h"; . auto/include |
233 | |
234 | |
2747
ee5de4f120f4
fix GNU strerror_r() detection, the bug has been inroduced in r2600
Igor Sysoev <igor@sysoev.ru>
parents:
2660
diff
changeset
|
235 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |