~ chicken-core (chicken-5) 78efcaa0773fc0ab88ceb83b845b3261ae07d9e2
commit 78efcaa0773fc0ab88ceb83b845b3261ae07d9e2
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Mar 2 12:02:35 2012 +0100
Commit: Christian Kellermann <ckeen@pestilenz.org>
CommitDate: Mon Apr 16 14:40:34 2012 +0200
check egg-name in setup-download
Signed-off-by: Christian Kellermann <ckeen@pestilenz.org>
diff --git a/setup-download.scm b/setup-download.scm
index 9619d80a..ec94ac3b 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -417,10 +417,21 @@
(read-line in)
(get-chunks (cons chunk data)) ) ) ) ) ))
+ (define slashes (char-set #\\ #\/))
+
+ (define (valid-extension-name? name)
+ (and (not (member name '("" ".." ".")))
+ (not (string-index name slashes))))
+
+ (define (check-egg-name name)
+ (unless (valid-extension-name? name)
+ (error "invalid extension name" name)))
+
(define (retrieve-extension name transport location
#!key version quiet destination username password tests
proxy-host proxy-port proxy-user-pass
trunk (mode 'default) clean)
+ (check-egg-name name)
(fluid-let ((*quiet* quiet)
(*trunk* trunk)
(*mode* mode))
@@ -448,6 +459,7 @@
(error "cannot list extensions - unsupported transport" transport) ) ) ) )
(define (list-extension-versions name transport location #!key quiet username password)
+ (check-egg-name name)
(fluid-let ((*quiet* quiet))
(case transport
((local)
Trap