From d99854cac4065bc7b337815fb2116269d58dab73 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 21 Apr 2014 13:26:55 +0200 Subject: handle pkgnames shorter than modifiers The bugreport highlights the problem with an empty package name. We fix this by 'ignoring' these so that it behaves just like "apt-get install". The deeper problem is that modifier strings can be longer than a package name in which case the comparison doesn't make sense, so don't compare then. Was not noticed so far as all modifiers are of length 1, so the only package name shorter than this is in fact the empty package name. Closes: 744940 --- test/integration/test-ubuntu-bug-365611-long-package-names | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/integration/test-ubuntu-bug-365611-long-package-names b/test/integration/test-ubuntu-bug-365611-long-package-names index 894c8dc97..f22986e21 100755 --- a/test/integration/test-ubuntu-bug-365611-long-package-names +++ b/test/integration/test-ubuntu-bug-365611-long-package-names @@ -4,8 +4,12 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +configarchitecture 'i386' setupaptarchive aptget install $(for i in $(seq 0 1000); do echo -n 'a'; done) 2> longpackagename.log > /dev/null || true testfileequal 'longpackagename.log' "E: Unable to locate package $(for i in $(seq 0 1000); do echo -n 'a'; done)" + +# … and the opposite of long: +aptget install "" -s >longpackagename.log 2>&1 || true +testfileequal 'longpackagename.log' "$(aptget install -s)" -- cgit v1.2.3-70-g09d2 From a11f6c973bc0dc226d8953e3edb6333d526c3143 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 30 Apr 2014 17:04:29 +0200 Subject: Only do openpty() if both stdin/stdout are terminals Closes: 746434 --- apt-pkg/deb/dpkgpm.cc | 11 ++++++----- test/integration/test-failing-maintainer-scripts | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index c52b83c6e..e410594df 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1053,14 +1053,15 @@ void pkgDPkgPM::StartPtyMagic() } // setup the pty and stuff - struct winsize win; + struct winsize win; - // if tcgetattr does not return zero there was a error - // and we do not do any pty magic + // if tcgetattr for both stdin/stdout returns 0 (no error) + // we do the pty magic _error->PushToStack(); - if (tcgetattr(STDOUT_FILENO, &d->tt) == 0) + if (tcgetattr(STDIN_FILENO, &d->tt) == 0 && + tcgetattr(STDOUT_FILENO, &d->tt) == 0) { - if (ioctl(1, TIOCGWINSZ, (char *)&win) < 0) + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&win) < 0) { _error->Errno("ioctl", _("ioctl(TIOCGWINSZ) failed")); } else if (openpty(&d->master, &d->slave, NULL, &d->tt, &win) < 0) diff --git a/test/integration/test-failing-maintainer-scripts b/test/integration/test-failing-maintainer-scripts index cb82ebc7a..3dd7d643e 100755 --- a/test/integration/test-failing-maintainer-scripts +++ b/test/integration/test-failing-maintainer-scripts @@ -86,7 +86,7 @@ testmyfailure() { testfailure "$@" -o APT::Status-Fd=3 msgtest 'Test for failure message of maintainerscript in' 'console log' local TEST='rootdir/tmp/testfailure.output' - if grep -q 'exit status 29$' "$TEST"; then + if grep -q 'exit status 29' "$TEST"; then msgpass else cat $TEST -- cgit v1.2.3-70-g09d2