annotate auto/cc/name @ 4617:972642646f06

Rewrite: fixed escaping and possible segfault (ticket #162). The following code resulted in incorrect escaping of uri and possible segfault: location / { rewrite ^(.*) $1?c=$1; return 200 "$uri"; } If there were arguments in a rewrite's replacement string, and length was actually calculated (due to duplicate captures as in the example above, or variables present), the is_args flag was set and incorrectly copied after length calculation. This resulted in escaping applied to the uri part of the replacement, resulting in incorrect escaping. Additionally, buffer was allocated without escaping expected, thus this also resulted in buffer overrun and possible segfault.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 11 May 2012 13:19:22 +0000
parents 4871a7dc12a9
children 1f908d2dde8d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4229
diff changeset
3 # Copyright (C) Nginx, Inc.
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
6 if [ "$NGX_PLATFORM" != win32 ]; then
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
7
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
8 ngx_feature="C compiler"
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
9 ngx_feature_name=
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
10 ngx_feature_run=yes
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
11 ngx_feature_incs=
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
12 ngx_feature_path=
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
13 ngx_feature_libs=
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
14 ngx_feature_test=
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
15 . auto/feature
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
16
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
17 if [ $ngx_found = no ]; then
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
18 echo
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
19 echo $0: error: C compiler $CC is not found
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
20 echo
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
21 exit 1
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
22 fi
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
23
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
24 fi
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
27 if [ "$CC" = cl ]; then
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
28 if `$NGX_WINE $CC -v 2>&1 \
4229
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
29 | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
30 >/dev/null 2>&1`; then
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
31
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
32 NGX_CC_NAME=msvc10
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
33 echo " + using Microsoft Visual C++ 10 compiler"
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
34
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
35 else if `$NGX_WINE $CC -v 2>&1 \
1639
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
36 | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
37 >/dev/null 2>&1`; then
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
38
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
39 NGX_CC_NAME=msvc8
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
40 echo " + using Microsoft Visual C++ 8 compiler"
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
41
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
42 else if `$NGX_WINE $CC -v 2>&1 \
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
43 | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
703
694d285ec752 fix ">/dev/null 2>&1" order
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
44 >/dev/null 2>&1`; then
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
45
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
46 NGX_CC_NAME=msvc7
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
47 echo " + using Microsoft Visual C++ 7 compiler"
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
48
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
49 else
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
50 NGX_CC_NAME=msvc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
51 echo " + using Microsoft Visual C++ compiler"
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
52 fi
1639
7d125a707158 msvc8 compatibility: it can not build with debug under Wine
Igor Sysoev <igor@sysoev.ru>
parents: 946
diff changeset
53 fi
4229
fbd6d1e5cdef Fix of building by Microsoft Visual C++ 10 compiler.
Igor Sysoev <igor@sysoev.ru>
parents: 1639
diff changeset
54 fi
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56 else
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
57 if [ "$CC" = wcl386 ]; then
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58 NGX_CC_NAME=owc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
59 echo " + using Open Watcom C compiler"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
60
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
61 else
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
62 if [ "$CC" = bcc32 ]; then
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
63 NGX_CC_NAME=bcc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
64 echo " + using Borland C++ compiler"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
65
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
66 else
4492
4871a7dc12a9 Configure: moved icc detection before gcc.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
67 if `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
4871a7dc12a9 Configure: moved icc detection before gcc.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
68 NGX_CC_NAME=icc
4871a7dc12a9 Configure: moved icc detection before gcc.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
69 echo " + using Intel C++ compiler"
4871a7dc12a9 Configure: moved icc detection before gcc.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
70
4871a7dc12a9 Configure: moved icc detection before gcc.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
71 else
703
694d285ec752 fix ">/dev/null 2>&1" order
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
72 if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
73 NGX_CC_NAME=gcc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
74 echo " + using GNU C compiler"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
76 else
703
694d285ec752 fix ">/dev/null 2>&1" order
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
77 if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
78 NGX_CC_NAME=sunc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
79 echo " + using Sun C compiler"
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
80
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
81 else
703
694d285ec752 fix ">/dev/null 2>&1" order
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
82 if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 NGX_CC_NAME=ccc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
84 echo " + using Compaq C compiler"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
86 else
703
694d285ec752 fix ">/dev/null 2>&1" order
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
87 if `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
88 NGX_CC_NAME=acc
946
756e8a5b1f78 early C compiler test
Igor Sysoev <igor@sysoev.ru>
parents: 703
diff changeset
89 echo " + using HP aC++ compiler"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
90
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
91 else
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
92 NGX_CC_NAME=unknown
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
94 fi # acc
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95 fi # ccc
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
96 fi # sunc
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
97 fi # icc
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98 fi # gcc
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99 fi # bcc
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100 fi # owc
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
101 fi # msvc