annotate auto/os/freebsd @ 571:5938746e70c2 PATCH_NGINX_MAIL_0_8

Mail: get rid of ugly protocol check in ngx_mail_auth_parse(). Instead, use index of argument which holds authentication mechanism name. For IMAP and POP3 it's 0, for SMTP - 1 as SMTP preserves command in first argument to allow pipelining support. While here, add check that we actually have argument holding authentication mechanism name. Currently IMAP has no appropriate checks before calling ngx_mail_auth_parse() which results in possible access of uninitialized memory.
author Maxim Dounin <mdounin@mdounin.ru>
date Sun, 27 Sep 2009 00:52:15 +0400
parents d41628eb4d0a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4
58
b55cbf18157e nginx 0.1.29
Igor Sysoev <http://sysoev.ru>
parents: 52
diff changeset
5 have=NGX_FREEBSD . auto/have_headers
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
6
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 CORE_INCS="$UNIX_INCS"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9 CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
11 ngx_spacer='
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
12 '
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
13
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
15 # __FreeBSD_version and sysctl kern.osreldate are the best ways
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
16 # to determine whether some capability exists and is safe to use.
232
d8f5c91a5c07 nginx 0.4.1
Igor Sysoev <http://sysoev.ru>
parents: 112
diff changeset
17 # __FreeBSD_version is used for the testing of the build environment.
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
18 # sysctl kern.osreldate is used for the testing of the kernel capabilities.
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
20 version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
21 | sed -e 's/^.* \(.*\)$/\1/'`
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
22
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
23 osreldate=`/sbin/sysctl -n kern.osreldate`
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
24
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
25
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
26 # setproctitle() in libutil
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
27
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28 if [ \( $version -ge 500000 -a $version -lt 500012 \) \
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
29 -o $version -lt 410002 ]
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
30 then
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31 echo " + setproctitle() in libutil"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
32
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
33 CORE_LIBS="$CORE_LIBS -lutil"
58
b55cbf18157e nginx 0.1.29
Igor Sysoev <http://sysoev.ru>
parents: 52
diff changeset
34 NGX_SETPROCTITLE_LIB="-lutil"
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
35 fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
36
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
37 # sendfile
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
38
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
39 if [ $osreldate -gt 300007 ]; then
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
40 echo " + sendfile() found"
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
41
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
42 have=NGX_HAVE_SENDFILE . auto/have
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
43 CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
44 fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
45
560
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
46 if [ $osreldate -gt 502103 ]; then
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
47 echo " + sendfile()'s SF_NODISKIO found"
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
48
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
49 have=NGX_HAVE_AIO_SENDFILE . auto/have
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
50 fi
d41628eb4d0a nginx 0.8.12
Igor Sysoev <http://sysoev.ru>
parents: 232
diff changeset
51
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
52
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
53 # kqueue
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
54
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
55 if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
56 -o $osreldate -ge 500011 ]
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
57 then
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
58 echo " + kqueue found"
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
59
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
60 have=NGX_HAVE_KQUEUE . auto/have
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
61 have=NGX_HAVE_CLEAR_EVENT . auto/have
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
62 EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
63 CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
64 EVENT_FOUND=YES
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
65 fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
66
38
2879cd3a40cb nginx 0.1.19
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
67
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
68 NGX_KQUEUE_CHECKED=YES
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
69
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
70
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
71 # kqueue's NOTE_LAWAT
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
72
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
73 if [ \( $version -lt 500000 -a $version -ge 430000 \) \
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
74 -o $version -ge 500018 ]
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
75 then
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
76 echo " + kqueue's NOTE_LOWAT found"
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
77 have=NGX_HAVE_LOWAT_EVENT . auto/have
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
78 fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
80 # kqueue's EVFILT_TIMER
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
81
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
82 if [ \( $version -lt 500000 -a $version -ge 440001 \) \
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
83 -o $version -ge 500023 ]
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
84 then
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
85 echo " + kqueue's EVFILT_TIMER found"
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
86 have=NGX_HAVE_TIMER_EVENT . auto/have
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
87 fi
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 64
diff changeset
88
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
89
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
90 if [ $USE_THREADS = "rfork" ]; then
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
91
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
92 echo " + using rfork()"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
93
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
94 # # kqueue's EVFILT_SIGNAL is safe
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
95 #
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
96 # if [ $version -gt 460101 ]; then
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
97 # echo " + kqueue's EVFILT_SIGNAL is safe"
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
98 # have=NGX_HAVE_SAFE_EVFILT_SIGNAL . auto/have
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
99 # else
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
100 # echo "$0: error: the kqueue's EVFILT_SIGNAL is unsafe on this"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
101 # echo "FreeBSD version, so --with-threads=rfork could not be used"
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
102 # echo
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
103 #
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
104 # exit 1
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
105 # fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
106 fi
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
107
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
108
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
109 if [ $EVENT_AIO = YES ]; then
16
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
110 if [ \( $version -lt 500000 -a $version -ge 430000 \) \
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
111 -o $version -ge 500014 ]
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
112 then
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
113 have=NGX_HAVE_AIO . auto/have
16
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
114 EVENT_MODULES="$EVENT_MODULES $AIO_MODULE"
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
115 CORE_SRCS="$CORE_SRCS $AIO_SRCS"
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
116 else
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
117
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
118 cat << END
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
119
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
120 $0: error: the kqueue does not support AIO on this FreeBSD version
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
121
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
122 END
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
123
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
124 exit 1
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
125 fi
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
126 fi