diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-12-31 11:15:24 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-12-31 11:18:30 +0100 |
commit | 091191c3dcbfb9f01070d26bf15cb2c4dd07b1b5 (patch) | |
tree | f77c3bf5986dd80bd0adce92b9ad8726d30f5fed | |
parent | 1c27f72fc2770d68243dd95b7c05adc3b2b02ea4 (diff) | |
download | guix-091191c3dcbfb9f01070d26bf15cb2c4dd07b1b5.tar.gz |
list-runtime-root: Fix off-by-one in 'strip-drop' call.
Fixes <https://bugs.gnu.org/29862>. Reported by Danny Milosavljevic <dannym@scratchpost.org>. * nix/scripts/list-runtime-roots.in (canonicalize-store-item): Define 'store' with a trailing "/". Have the 'string-prefix?' call match the 'string-drop' call.
-rw-r--r-- | nix/scripts/list-runtime-roots.in | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/nix/scripts/list-runtime-roots.in b/nix/scripts/list-runtime-roots.in index 48a07edf5f..5f2660fb5e 100644 --- a/nix/scripts/list-runtime-roots.in +++ b/nix/scripts/list-runtime-roots.in @@ -130,12 +130,13 @@ or the empty list." (< (string->number a) (string->number b)))))) (define canonicalize-store-item - (let ((prefix (+ 1 (string-length %store-directory)))) + (let* ((store (string-append %store-directory "/")) + (prefix (string-length store))) (lambda (file) "Return #f if FILE is not a store item; otherwise, return the store file name without any sub-directory components." - (and (string-prefix? %store-directory file) - (string-append %store-directory "/" + (and (string-prefix? store file) + (string-append store (let ((base (string-drop file prefix))) (match (string-index base #\/) (#f base) |