~ 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