summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2014-09-19 16:41:55 +0200
committerMichael Vogt <mvo@ubuntu.com>2014-09-19 16:41:55 +0200
commit9da539c5aff025aab99537be1c75e8c6a853fd83 (patch)
treeef94188d861699977f2ceee8510c5dfbdcf22ca4
parent8b451962751298876d1f399e4de492d8adbb135a (diff)
Fix regression when copy: is used for a relative path
When we do a ReverifyAfterIMS() we use the copy: method to verify the hashes again. If the user uses -o Dir=./something/relative this fails because we use the URI class in copy.cc that strips away the leading relative part. By not using URI this is fixed. Closes: #762160
-rw-r--r--methods/copy.cc4
-rwxr-xr-xtest/integration/test-bug-762160-relpath10
2 files changed, 8 insertions, 6 deletions
diff --git a/methods/copy.cc b/methods/copy.cc
index 5570f31c8..b78053d36 100644
--- a/methods/copy.cc
+++ b/methods/copy.cc
@@ -55,8 +55,8 @@ void CopyMethod::CalculateHashes(FetchResult &Res)
/* */
bool CopyMethod::Fetch(FetchItem *Itm)
{
- URI Get = Itm->Uri;
- std::string File = Get.Path;
+ // this ensures that relative paths work in copy
+ std::string File = Itm->Uri.substr(Itm->Uri.find(':')+1);
// Stat the file and send a start message
struct stat Buf;
diff --git a/test/integration/test-bug-762160-relpath b/test/integration/test-bug-762160-relpath
index 0af71f57b..204587727 100755
--- a/test/integration/test-bug-762160-relpath
+++ b/test/integration/test-bug-762160-relpath
@@ -1,9 +1,9 @@
#!/bin/sh
+# regresion test for bug #762160 where apt-get update fails when a
+# relative directory is given
+#
set -e
-# dpkg implements versioned provides in commit 5bb02fe80e9f40dcad9703a72f67cf615ff217b5
-# but previous versions seem to allow parsing, working and ignoring it.
-
TESTDIR=$(readlink -f $(dirname $0))
. $TESTDIR/framework
setupenvironment
@@ -11,5 +11,7 @@ configarchitecture 'amd64'
insertpackage 'unstable' 'foo' 'all' '1'
setupaptarchive
+changetowebserver
-aptget update -o Dir=./apt
+testsuccess aptget update -o Dir=./rootdir
+testsuccess aptget update -o Dir=./rootdir \ No newline at end of file