From 840dcaae21c2b8b478e5f1bfed599885f6177672 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 23 Jan 2017 18:18:50 +0000 Subject: Handle joining of absolute zip paths --- lib/zipfile.js | 10 +++++++--- test/zipfile.tests.js | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/zipfile.js b/lib/zipfile.js index 708b07a..91c5f04 100644 --- a/lib/zipfile.js +++ b/lib/zipfile.js @@ -38,7 +38,11 @@ function openArrayBuffer(arrayBuffer) { } function joinZipPath(first, second) { - // In general, we should check first and second for trailing and leading slashes, - // but in our specific case this seems to be sufficient - return first + "/" + second; + if (second.charAt(0) === "/") { + return second; + } else { + // In general, we should check first and second for trailing and leading slashes, + // but in our specific case this seems to be sufficient + return first + "/" + second; + } } diff --git a/test/zipfile.tests.js b/test/zipfile.tests.js index d539307..52389a8 100644 --- a/test/zipfile.tests.js +++ b/test/zipfile.tests.js @@ -29,5 +29,12 @@ test("joinZipPath", { zipfile.joinZipPath("one/two", "three/four"), "one/two/three/four" ) + }, + + "joining base to absolute path ignores base": function() { + assert.equal( + zipfile.joinZipPath("one/two", "/three/four"), + "/three/four" + ) } }); -- cgit v1.2.3