summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-01-18 22:19:04 +0100
committerLudovic Courtès <ludo@gnu.org>2015-01-18 22:19:04 +0100
commit71c1d5280cdeba90cfd1230f5f376a7e89b93694 (patch)
tree1e540f5adb3cf6b862d0e02856ae99f781b1703c
parentaa27b56083f1b4f05db11bfb160860ed6af34e2b (diff)
downloadguix-71c1d5280cdeba90cfd1230f5f376a7e89b93694.tar.gz
nar: Read archive signatures as Latin-1 strings.
Fixes <http://bugs.gnu.org/19610>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/nar.scm (restore-one-item): Use 'read-latin1-string' to read the
  signature.
-rw-r--r--guix/nar.scm6
1 files changed, 4 insertions, 2 deletions
diff --git a/guix/nar.scm b/guix/nar.scm
index bab727e65d..43e5210752 100644
--- a/guix/nar.scm
+++ b/guix/nar.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -211,7 +211,9 @@ s-expression"))
                 (_ "importing file or directory '~a'...~%")
                 file)
 
-        (let ((sig (and has-sig? (read-string port))))
+        ;; The signature may contain characters that are meant to be
+        ;; interpreted as bytes in a 'char *', so read them as a ISO-8859-1.
+        (let ((sig (and has-sig? (read-latin1-string port))))
           (when verify-signature?
             (if sig
                 (begin