Opened 4 weeks ago

Last modified 4 weeks ago

#1685 new defect

shell-variable in egg-compile should quote environment variables

Reported by: Mario Domenech Goulart Owned by:
Priority: major Milestone: 5.3
Component: core libraries Version: 5.2.0
Keywords: shell-variable, DESTDIR, chicken-install, egg-compile Cc:
Estimated difficulty:

Description

Without quoting shell variables, install scripts end up with commands like

mkdir -p ${DESTDIR}'/home/mario/local/chicken-head/lib/chicken/11'

If DESTDIR} happens to contain a space, the command above will not do what it is expected to do.

Double-quoting shell variables on Unix systems is not harmful, as far as I can tell. I have no clue about Windows.

At the moment, shell-variable seems to be only applied to DESTDIR.

The following patch would improve the situation on Unix:

diff --git a/egg-compile.scm b/egg-compile.scm
index 4a72d5d0..e6be5d1d 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -1227,7 +1227,7 @@ EOF

 (define (shell-variable var platform)
   (case platform
-    ((unix) (string-append "${" var "}"))
+    ((unix) (string-append "\"${" var "}\""))
     ((windows) (string-append "%" var "%"))))

 ;; NOTE `cmd' must already be quoted for shell

Change History (1)

comment:1 Changed 4 weeks ago by wasamasa

You'll need to use double quotes on Windows as well, see https://ss64.com/nt/syntax-esc.html for the finer details.

Note: See TracTickets for help on using tickets.