diff --git a/apache2/apache2_config.c b/apache2/apache2_config.c index 80f8f2b507..c6ef27e49a 100644 --- a/apache2/apache2_config.c +++ b/apache2/apache2_config.c @@ -193,7 +193,7 @@ static void copy_rules_phase(apr_pool_t *mp, switch(exceptions[j]->type) { case RULE_EXCEPTION_REMOVE_ID : if ((rule->actionset != NULL)&&(rule->actionset->id != NULL)) { - int ruleid = atoi(rule->actionset->id); + long ruleid = strtol(rule->actionset->id, 0, 10); if (rule_id_in_range(ruleid, exceptions[j]->param)) copy--; } break; @@ -2471,7 +2471,8 @@ static const char *cmd_rule_remove_by_msg(cmd_parms *cmd, void *_dcfg, static const char *cmd_rule_update_action_by_id(cmd_parms *cmd, void *_dcfg, const char *p1, const char *p2) { - int offset = 0, rule_id = atoi(p1); + int offset = 0; + long rule_id = strtol(p1, 0, 10); char *opt = strchr(p1,':'); char *savedptr = NULL; char *param = apr_pstrdup(cmd->pool, p1); diff --git a/apache2/mod_security2.c b/apache2/mod_security2.c index 7bb215e2ed..8bc4af9fc6 100644 --- a/apache2/mod_security2.c +++ b/apache2/mod_security2.c @@ -151,7 +151,7 @@ int perform_interception(modsec_rec *msr) { msre_actionset *actionset = NULL; const char *message = NULL; const char *phase_text = ""; - unsigned int pause = 0; + unsigned long pause = 0; int status = DECLINED; int log_level = 1; @@ -188,20 +188,20 @@ int perform_interception(modsec_rec *msr) { var->value_len = strlen(actionset->intercept_pause); expand_macros(msr, var, NULL, msr->mp); - pause = atoi(var->value); - if ((pause == LONG_MAX)||(pause == LONG_MIN)||(pause <= 0)) + pause = strtoul(var->value, 0, 10); + if ((pause == ULONG_MAX)||(pause == LONG_MIN)||(pause <= 0)) pause = 0; msr_log(msr, (log_level > 3 ? log_level : log_level + 1), "Pausing transaction for " - "%d msec.", pause); + "%lu msec.", pause); /* apr_sleep accepts microseconds */ apr_sleep((apr_interval_time_t)(pause * 1000)); } else { - pause = atoi(actionset->intercept_pause); - if ((pause == LONG_MAX)||(pause == LONG_MIN)||(pause <= 0)) + pause = strtoul(actionset->intercept_pause, 0, 10); + if ((pause == ULONG_MAX)||(pause == LONG_MIN)||(pause <= 0)) pause = 0; msr_log(msr, (log_level > 3 ? log_level : log_level + 1), "Pausing transaction for " - "%d msec.", pause); + "%lu msec.", pause); /* apr_sleep accepts microseconds */ apr_sleep((apr_interval_time_t)(pause * 1000)); } diff --git a/apache2/re.c b/apache2/re.c index 64a2a6abe5..05e63a800b 100644 --- a/apache2/re.c +++ b/apache2/re.c @@ -531,7 +531,7 @@ int msre_ruleset_rule_matches_exception(msre_rule *rule, rule_exception *re) { switch(re->type) { case RULE_EXCEPTION_REMOVE_ID : if ((rule->actionset != NULL)&&(rule->actionset->id != NULL)) { - int ruleid = atoi(rule->actionset->id); + long ruleid = atoi(rule->actionset->id); if (rule_id_in_range(ruleid, re->param)) { match = 1; @@ -3385,7 +3385,7 @@ static apr_status_t msre_rule_process(msre_rule *rule, modsec_rec *msr) { /** * Checks whether the given rule ID is in the given range. */ -int rule_id_in_range(int ruleid, const char *range) { +int rule_id_in_range(long ruleid, const char *range) { char *p = NULL, *saveptr = NULL; char *data = NULL; diff --git a/apache2/re.h b/apache2/re.h index c0c5433965..54e29e469c 100644 --- a/apache2/re.h +++ b/apache2/re.h @@ -70,7 +70,7 @@ msre_var DSOLOCAL *msre_create_var_ex(apr_pool_t *pool, msre_engine *engine, con int DSOLOCAL msre_parse_generic(apr_pool_t *pool, const char *text, apr_table_t *vartable, char **error_msg); -int DSOLOCAL rule_id_in_range(int ruleid, const char *range); +int DSOLOCAL rule_id_in_range(long ruleid, const char *range); msre_var DSOLOCAL *generate_single_var(modsec_rec *msr, msre_var *var, apr_array_header_t *tfn_arr, msre_rule *rule, apr_pool_t *mptmp); diff --git a/apache2/re_actions.c b/apache2/re_actions.c index f81ddc87c7..b23ffefa0a 100644 --- a/apache2/re_actions.c +++ b/apache2/re_actions.c @@ -388,14 +388,14 @@ static apr_status_t msre_action_id_init(msre_engine *engine, apr_pool_t *mp, msr } static char *msre_action_id_validate(msre_engine *engine, apr_pool_t *mp, msre_action *action) { - int id; + long id; if(action != NULL && action->param != NULL) { for(id=0;idparam);id++) { if(!apr_isdigit(action->param[id])) return apr_psprintf(mp, "ModSecurity: Invalid value for action ID: %s", action->param); } - id = atoi(action->param); + id = strtol(action->param, 0, 10); if ((id == LONG_MAX)||(id == LONG_MIN)||(id <= 0)) { return apr_psprintf(mp, "ModSecurity: Invalid value for action ID: %s", action->param); } diff --git a/build/compile b/build/compile index 1b1d232169..2ab71e4ea1 100755 --- a/build/compile +++ b/build/compile @@ -1,9 +1,9 @@ #! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. +# Wrapper for compilers which do not understand '-c -o'. -scriptversion=2005-05-14.22 +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -17,8 +17,7 @@ scriptversion=2005-05-14.22 # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -29,21 +28,224 @@ scriptversion=2005-05-14.22 # bugs to or send patches to # . +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. +right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF @@ -53,11 +255,14 @@ EOF echo "compile $scriptversion" exit $? ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; esac ofile= cfile= -eat= for arg do @@ -66,8 +271,8 @@ do else case $1 in -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) @@ -94,22 +299,22 @@ do done if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a + # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also + # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. -# Note: use `[/.-]' here to ensure that we don't use the same name +# Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break @@ -124,9 +329,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15 ret=$? if test -f "$cofile"; then - mv "$cofile" "$ofile" + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then - mv "${cofile}bj" "$ofile" + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" @@ -138,5 +343,6 @@ exit $ret # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" # End: