summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-12-31 11:15:24 +0100
committerLudovic Courtès <ludo@gnu.org>2017-12-31 11:18:30 +0100
commit091191c3dcbfb9f01070d26bf15cb2c4dd07b1b5 (patch)
treef77c3bf5986dd80bd0adce92b9ad8726d30f5fed
parent1c27f72fc2770d68243dd95b7c05adc3b2b02ea4 (diff)
downloadguix-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.in7
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)