>From ebfbd4395566f7788204645eed81911b530ec216 Mon Sep 17 00:00:00 2001 From: Evan Hanson Date: Sat, 9 Jun 2018 19:26:55 +1200 Subject: [PATCH] Forbid relative pathnames in CHICKEN_INSTALL_REPOSITORY --- chicken-install.scm | 4 +++- chicken-uninstall.scm | 1 + egg-environment.scm | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/chicken-install.scm b/chicken-install.scm index 9fa22aec..56712849 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -1057,7 +1057,9 @@ EOF (rx (irregex "([^:]+):(.+)"))) (let loop ((args args)) (if (null? args) - (perform-actions (reverse eggs)) + (begin + (validate-environment) + (perform-actions (reverse eggs))) (let ((arg (car args))) (cond ((member arg '("-h" "-help" "--help")) (usage 0)) diff --git a/chicken-uninstall.scm b/chicken-uninstall.scm index 6a692c83..dfc19c1a 100644 --- a/chicken-uninstall.scm +++ b/chicken-uninstall.scm @@ -159,6 +159,7 @@ EOF (let loop ((args args) (pats '())) (cond ((null? args) (when (null? pats) (usage 1)) + (validate-environment) (uninstall (reverse pats) mtch)) (else (let ((arg (car args))) diff --git a/egg-environment.scm b/egg-environment.scm index 63ea472f..f27ea097 100644 --- a/egg-environment.scm +++ b/egg-environment.scm @@ -96,6 +96,11 @@ EOF (define +status-file+ "STATUS") (define +egg-extension+ "egg") +(define (validate-environment) + (let ((var (get-environment-variable "CHICKEN_INSTALL_REPOSITORY"))) + (unless (or (not var) (absolute-pathname? var)) + (error "CHICKEN_INSTALL_REPOSITORY must be an absolute pathname" var)))) + (define (destination-repository mode #!optional run) (if (eq? 'target mode) (if run target-run-repo target-repo) -- 2.11.0