- (djm) [configure.ac regress/agent-getpeereid.sh regress/multiplex.sh]

[regress/sftp-glob.sh regress/test-exec.sh] Rework how feature tests are
   disabled on platforms that do not support them; add a "config_defined()"
   shell function that greps for defines in config.h and use them to decide
   on feature tests.
   Convert a couple of existing grep's over config.h to use the new function
   Add a define "FILESYSTEM_NO_BACKSLASH" for filesystem that can't represent
   backslash characters in filenames, enable it for Cygwin and use it to turn
   of tests for quotes backslashes in sftp-glob.sh.
   based on discussion with vinschen AT redhat.com and dtucker@; ok dtucker@
This commit is contained in:
Damien Miller 2011-01-17 16:17:09 +11:00
parent 0c93adc7c1
commit 58497780ab
6 changed files with 41 additions and 16 deletions

View File

@ -9,6 +9,16 @@
- (dtucker) [openbsd-compat/port-linux.c] Bug #1838: Add support for the new - (dtucker) [openbsd-compat/port-linux.c] Bug #1838: Add support for the new
Linux OOM-killer magic values that changed in 2.6.36 kernels, with fallback Linux OOM-killer magic values that changed in 2.6.36 kernels, with fallback
to the old values. Feedback from vapier at gentoo org and djm, ok djm. to the old values. Feedback from vapier at gentoo org and djm, ok djm.
- (djm) [configure.ac regress/agent-getpeereid.sh regress/multiplex.sh]
[regress/sftp-glob.sh regress/test-exec.sh] Rework how feature tests are
disabled on platforms that do not support them; add a "config_defined()"
shell function that greps for defines in config.h and use them to decide
on feature tests.
Convert a couple of existing grep's over config.h to use the new function
Add a define "FILESYSTEM_NO_BACKSLASH" for filesystem that can't represent
backslash characters in filenames, enable it for Cygwin and use it to turn
of tests for quotes backslashes in sftp-glob.sh.
based on discussion with vinschen AT redhat.com and dtucker@; ok dtucker@
20110116 20110116
- (dtucker) [Makefile.in configure.ac regress/kextype.sh] Skip sha256-based - (dtucker) [Makefile.in configure.ac regress/kextype.sh] Skip sha256-based

View File

@ -1,4 +1,4 @@
# $Id: configure.ac,v 1.465 2011/01/16 07:28:12 dtucker Exp $ # $Id: configure.ac,v 1.466 2011/01/17 05:17:09 djm Exp $
# #
# Copyright (c) 1999-2004 Damien Miller # Copyright (c) 1999-2004 Damien Miller
# #
@ -15,7 +15,7 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org) AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org)
AC_REVISION($Revision: 1.465 $) AC_REVISION($Revision: 1.466 $)
AC_CONFIG_SRCDIR([ssh.c]) AC_CONFIG_SRCDIR([ssh.c])
# local macros # local macros
@ -483,6 +483,7 @@ int main(void) { exit(0); }
[Define if your platform needs to skip post auth [Define if your platform needs to skip post auth
file descriptor passing]) file descriptor passing])
AC_DEFINE(SSH_IOBUFSZ, 65535, [Windows is sensitive to read buffer size]) AC_DEFINE(SSH_IOBUFSZ, 65535, [Windows is sensitive to read buffer size])
AC_DEFINE(FILESYSTEM_NO_BACKSLASH, 1, [File names may not contain backslash characters])
;; ;;
*-*-dgux*) *-*-dgux*)
AC_DEFINE(IP_TOS_IS_BROKEN, 1, AC_DEFINE(IP_TOS_IS_BROKEN, 1,

View File

@ -7,10 +7,7 @@ UNPRIV=nobody
ASOCK=${OBJ}/agent ASOCK=${OBJ}/agent
SSH_AUTH_SOCK=/nonexistent SSH_AUTH_SOCK=/nonexistent
if grep "#undef.*HAVE_GETPEEREID" ${BUILDDIR}/config.h >/dev/null 2>&1 && \ if ! config_defined HAVE_GETPEEREID HAVE_GETPEERUCRED HAVE_SO_PEERCRED ; then
grep "#undef.*HAVE_GETPEERUCRED" ${BUILDDIR}/config.h >/dev/null && \
grep "#undef.*HAVE_SO_PEERCRED" ${BUILDDIR}/config.h >/dev/null
then
echo "skipped (not supported on this platform)" echo "skipped (not supported on this platform)"
exit 0 exit 0
fi fi

View File

@ -5,8 +5,7 @@ CTL=/tmp/openssh.regress.ctl-sock.$$
tid="connection multiplexing" tid="connection multiplexing"
if grep "#define.*DISABLE_FD_PASSING" ${BUILDDIR}/config.h >/dev/null 2>&1 if config_defined DISABLE_FD_PASSING ; then
then
echo "skipped (not supported on this platform)" echo "skipped (not supported on this platform)"
exit 0 exit 0
fi fi

View File

@ -3,11 +3,18 @@
tid="sftp glob" tid="sftp glob"
config_defined FILESYSTEM_NO_BACKSLASH && nobs="not supported on this platform"
sftp_ls() { sftp_ls() {
target=$1 target=$1
errtag=$2 errtag=$2
expected=$3 expected=$3
unexpected=$4 unexpected=$4
skip=$5
if test "x$skip" != "x" ; then
verbose "$tid: $errtag (skipped: $skip)"
return
fi
verbose "$tid: $errtag" verbose "$tid: $errtag"
printf "ls -l %s" "${target}" | \ printf "ls -l %s" "${target}" | \
${SFTP} -b - -D ${SFTPSERVER} 2>/dev/null | \ ${SFTP} -b - -D ${SFTPSERVER} 2>/dev/null | \
@ -44,8 +51,8 @@ SPACE="${DIR}/g-q space"
rm -rf ${BASE} rm -rf ${BASE}
mkdir -p ${DIR} mkdir -p ${DIR}
touch "${DATA}" "${GLOB1}" "${GLOB2}" "${QUOTE}" touch "${DATA}" "${GLOB1}" "${GLOB2}" "${QUOTE}" "${SPACE}"
touch "${QSLASH}" "${ESLASH}" "${SLASH}" "${SPACE}" test "x$nobs" = "x" && touch "${QSLASH}" "${ESLASH}" "${SLASH}"
# target message expected unexpected # target message expected unexpected
sftp_ls "${DIR}/fil*" "file glob" "${DATA}" "" sftp_ls "${DIR}/fil*" "file glob" "${DATA}" ""
@ -55,14 +62,14 @@ sftp_ls "${DIR}/g-wild\*" "escaped glob" "g-wild*" "g-wildx"
sftp_ls "${DIR}/g-quote\\\"" "escaped quote" "g-quote\"" "" sftp_ls "${DIR}/g-quote\\\"" "escaped quote" "g-quote\"" ""
sftp_ls "\"${DIR}/g-quote\\\"\"" "quoted quote" "g-quote\"" "" sftp_ls "\"${DIR}/g-quote\\\"\"" "quoted quote" "g-quote\"" ""
sftp_ls "'${DIR}/g-quote\"'" "single-quoted quote" "g-quote\"" "" sftp_ls "'${DIR}/g-quote\"'" "single-quoted quote" "g-quote\"" ""
sftp_ls "${DIR}/g-sl\\\\ash" "escaped slash" "g-sl\\ash" ""
sftp_ls "'${DIR}/g-sl\\\\ash'" "quoted slash" "g-sl\\ash" ""
sftp_ls "${DIR}/g-slash\\\\" "escaped slash at EOL" "g-slash\\" ""
sftp_ls "'${DIR}/g-slash\\\\'" "quoted slash at EOL" "g-slash\\" ""
sftp_ls "${DIR}/g-qs\\\\\\\"" "escaped slash+quote" "g-qs\\\"" ""
sftp_ls "'${DIR}/g-qs\\\\\"'" "quoted slash+quote" "g-qs\\\"" ""
sftp_ls "${DIR}/g-q\\ space" "escaped space" "g-q space" "" sftp_ls "${DIR}/g-q\\ space" "escaped space" "g-q space" ""
sftp_ls "'${DIR}/g-q space'" "quoted space" "g-q space" "" sftp_ls "'${DIR}/g-q space'" "quoted space" "g-q space" ""
sftp_ls "${DIR}/g-sl\\\\ash" "escaped slash" "g-sl\\ash" "" "$nobs"
sftp_ls "'${DIR}/g-sl\\\\ash'" "quoted slash" "g-sl\\ash" "" "$nobs"
sftp_ls "${DIR}/g-slash\\\\" "escaped slash at EOL" "g-slash\\" "" "$nobs"
sftp_ls "'${DIR}/g-slash\\\\'" "quoted slash at EOL" "g-slash\\" "" "$nobs"
sftp_ls "${DIR}/g-qs\\\\\\\"" "escaped slash+quote" "g-qs\\\"" "" "$nobs"
sftp_ls "'${DIR}/g-qs\\\\\"'" "quoted slash+quote" "g-qs\\\"" "" "$nobs"
rm -rf ${BASE} rm -rf ${BASE}

View File

@ -221,6 +221,17 @@ fatal ()
exit $RESULT exit $RESULT
} }
# Check whether preprocessor symbols are defined in config.h.
config_defined ()
{
str=$1
while test "x$2" != "x" ; do
str="$str|$2"
shift
done
egrep "^#define.*($str)" ${BUILDDIR}/config.h >/dev/null 2>&1
}
RESULT=0 RESULT=0
PIDFILE=$OBJ/pidfile PIDFILE=$OBJ/pidfile