view 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
line wrap: on
line source


# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.


if [ "$NGX_PLATFORM" != win32 ]; then

    ngx_feature="C compiler"
    ngx_feature_name=
    ngx_feature_run=yes
    ngx_feature_incs=
    ngx_feature_path=
    ngx_feature_libs=
    ngx_feature_test=
    . auto/feature

    if [ $ngx_found = no ]; then
        echo
        echo $0: error: C compiler $CC is not found
        echo
        exit 1
    fi

fi


if [ "$CC" = cl ]; then
    if `$NGX_WINE $CC -v 2>&1 \
        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \
        >/dev/null 2>&1`; then

        NGX_CC_NAME=msvc10
        echo " + using Microsoft Visual C++ 10 compiler"

    else if `$NGX_WINE $CC -v 2>&1 \
        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
        >/dev/null 2>&1`; then

        NGX_CC_NAME=msvc8
        echo " + using Microsoft Visual C++ 8 compiler"

    else if `$NGX_WINE $CC -v 2>&1 \
        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
        >/dev/null 2>&1`; then

        NGX_CC_NAME=msvc7
        echo " + using Microsoft Visual C++ 7 compiler"

    else
        NGX_CC_NAME=msvc
        echo " + using Microsoft Visual C++ compiler"
    fi
    fi
    fi

else
if [ "$CC" = wcl386 ]; then
    NGX_CC_NAME=owc
    echo " + using Open Watcom C compiler"

else
if [ "$CC" = bcc32 ]; then
    NGX_CC_NAME=bcc
    echo " + using Borland C++ compiler"

else
if `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
    NGX_CC_NAME=icc
    echo " + using Intel C++ compiler"

else
if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
    NGX_CC_NAME=gcc
    echo " + using GNU C compiler"

else
if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
    NGX_CC_NAME=sunc
    echo " + using Sun C compiler"

else
if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
    NGX_CC_NAME=ccc
    echo " + using Compaq C compiler"

else
if `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
    NGX_CC_NAME=acc
    echo " + using HP aC++ compiler"

else
    NGX_CC_NAME=unknown

fi # acc
fi # ccc
fi # sunc
fi # icc
fi # gcc
fi # bcc
fi # owc
fi # msvc