summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-09-15 14:24:05 +0200
committerLudovic Courtès <ludo@gnu.org>2020-09-15 14:40:20 +0200
commitb911d6547444b5f8d17b224bafa5ee1b5aafaff5 (patch)
tree0d6115a775a0286ab5fbda156940aa2f84b7e682 /guix
parent1b157bbef0032121c88be2bbb834846115ce9341 (diff)
authenticate: Encode strings as ISO-8859-1.
Fixes <https://bugs.gnu.org/43421>. * guix/scripts/authenticate.scm (read-command): Decode strings as ISO-8859-1, not UTF-8. (guix-authenticate)[send-reply]: Encode strings as ISO-8859-1, not UTF-8. * tests/guix-authenticate.sh: Add test.
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/authenticate.scm8
1 files changed, 5 insertions, 3 deletions
diff --git a/guix/scripts/authenticate.scm b/guix/scripts/authenticate.scm
index 0bac13edee..45f62f6ebc 100644
--- a/guix/scripts/authenticate.scm
+++ b/guix/scripts/authenticate.scm
@@ -31,6 +31,7 @@
#:use-module (ice-9 rdelim)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
+ #:use-module (ice-9 iconv)
#:export (guix-authenticate))
;;; Commentary:
@@ -122,8 +123,9 @@ by colon, followed by the given number of characters."
(reverse result))
(else
(let* ((len (string->number (read-delimited ":" port)))
- (str (utf8->string
- (get-bytevector-n port len))))
+ (str (bytevector->string
+ (get-bytevector-n port len)
+ "ISO-8859-1" 'error)))
(loop (cons str result))))))))))
(define-syntax define-enumerate-type ;TODO: factorize
@@ -150,7 +152,7 @@ by colon, followed by the given number of characters."
(define (send-reply code str)
;; Send CODE and STR as a reply to our client.
- (let ((bv (string->utf8 str)))
+ (let ((bv (string->bytevector str "ISO-8859-1" 'error)))
(format #t "~a ~a:" code (bytevector-length bv))
(put-bytevector (current-output-port) bv)
(force-output (current-output-port))))