From 603a4ab0f641fd2cc400b432e810fd9c8a5f605c Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Tue, 23 Sep 2003 14:50:16 +0000 Subject: [PATCH] 0.8.3.89: Treatment of --load ... half fix the problems. Put LOAD into a multiple escape, so that changes to the readtable don't break the command-line option; ... log behaviour in the presence of #\" and #\* as a bug. --- BUGS | 8 ++++++++ NEWS | 3 +++ src/code/toplevel.lisp | 10 ++++++---- version.lisp-expr | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/BUGS b/BUGS index be258bd..d417baa 100644 --- a/BUGS +++ b/BUGS @@ -1297,3 +1297,11 @@ WORKAROUND: From Paul Dietz: (ash -1000000000000 -10000000000000000000) ==> 0 ;; should be -1 + +296: + (reported by Adam Warner, sbcl-devel 2003-09-23) + + The --load toplevel argument does not perform any sanitization of its + argument. As a result, files with Lisp pathname pattern characters + (#\* or #\?, for instance) or quotation marks can cause the system + to perform arbitrary behaviour. diff --git a/NEWS b/NEWS index ff90fba..3c801ad 100644 --- a/NEWS +++ b/NEWS @@ -2074,6 +2074,9 @@ changes in sbcl-0.8.4 relative to sbcl-0.8.3: CONTINUATION is now called LVAR; corresponding functions are renamed (e.g. SB-C::CONTINUATION-TYPE has become SB-C::LVAR-TYPE). * added type deriver for ISQRT (thanks to Robert E. Brown). + * bug fix: better support for loading from the command line when an + initialization file sets (READTABLE-CASE *READTABLE*). (thanks to + Adam Warner) * fixed some bugs revealed by Paul Dietz' test suite: ** the RETURN clause in LOOP is now equivalent to DO (RETURN ...). ** ROUND and FROUND now give the right answer when given very diff --git a/src/code/toplevel.lisp b/src/code/toplevel.lisp index e638b54..bbfd22b 100644 --- a/src/code/toplevel.lisp +++ b/src/code/toplevel.lisp @@ -351,8 +351,10 @@ (push (pop-option) reversed-evals)) ((string= option "--load") (pop-option) - (push (concatenate 'string "(LOAD \"" (pop-option) "\")") - reversed-evals)) + (push + ;; FIXME: see BUG 296 + (concatenate 'string "(|LOAD| \"" (pop-option) "\")") + reversed-evals)) ((string= option "--noprint") (pop-option) (setf noprint t)) @@ -362,10 +364,10 @@ ((string= option "--noprogrammer") (warn "treating deprecated --noprogrammer as --disable-debugger") (pop-option) - (push "(DISABLE-DEBUGGER)" reversed-evals)) + (push "(|DISABLE-DEBUGGER|)" reversed-evals)) ((string= option "--disable-debugger") (pop-option) - (push "(DISABLE-DEBUGGER)" reversed-evals)) + (push "(|DISABLE-DEBUGGER|)" reversed-evals)) ((string= option "--end-toplevel-options") (pop-option) (return)) diff --git a/version.lisp-expr b/version.lisp-expr index 26304fa..9e2601e 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.3.88" +"0.8.3.89" -- 1.7.10.4