diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php
index d121ee25361a6f7da1bc917748961d17c5f3da6d..1196c6b0760131c3bc36ddfc3d925d5e9c747d28 100644
--- a/lib/private/Files/Cache/Wrapper/CacheJail.php
+++ b/lib/private/Files/Cache/Wrapper/CacheJail.php
@@ -59,6 +59,9 @@ class CacheJail extends CacheWrapper {
 	 * @return null|string the jailed path or null if the path is outside the jail
 	 */
 	protected function getJailedPath($path) {
+		if ($this->root === '') {
+			return $path;
+		}
 		$rootLength = strlen($this->root) + 1;
 		if ($path === $this->root) {
 			return '';
diff --git a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
index 6ef6716f72138d533f826660cc79f9ae33eba160..e3043c50d57688a7c581a8a8f0bf94d1f3a3e90f 100644
--- a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
+++ b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
@@ -63,8 +63,17 @@ class CacheJailTest extends CacheTest {
 	}
 
 	function testGetById() {
-		//not supported
-		$this->assertTrue(true);
+		$data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
+		$id = $this->sourceCache->put('foo/bar', $data1);
+
+		// path from jailed foo of foo/bar is bar
+		$path = $this->cache->getPathById($id);
+		$this->assertEquals('bar', $path);
+
+		// path from jailed '' of foo/bar is foo/bar
+		$this->cache = new \OC\Files\Cache\Wrapper\CacheJail($this->sourceCache, '');
+		$path = $this->cache->getPathById($id);
+		$this->assertEquals('foo/bar', $path);
 	}
 
 	function testGetIncomplete() {