diff options
Diffstat (limited to 'community/chicken/CVE-2022-45145.patch')
-rw-r--r-- | community/chicken/CVE-2022-45145.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/community/chicken/CVE-2022-45145.patch b/community/chicken/CVE-2022-45145.patch new file mode 100644 index 00000000000..527f6bfdef4 --- /dev/null +++ b/community/chicken/CVE-2022-45145.patch @@ -0,0 +1,76 @@ +See https://lists.nongnu.org/archive/html/chicken-announce/2022-11/msg00000.html + +From a08f8f548d772ef410c672ba33a27108d8d434f3 Mon Sep 17 00:00:00 2001 +From: Vasilij Schneidermann <mail@vasilij.de> +Date: Sat, 5 Nov 2022 13:49:25 +0100 +Subject: [PATCH] Split up potentially long echo invocation on win32 + +Eggs with a very long infostr may trigger the maximum command line +invocation length of 8191 chars. To avoid running into this +limitation, the generated install script now creates an empty file, +then echoes each line into it. + +Closes #1800 + +This patch further addresses some security issues reported by Vasilij +and applied by Felix Winkelmann: + +- disable variable/command expansion in script-fragments + that produce egg-info files. +- limit the maximum line length of shell commands in for + Windows in the latter. + +Signed-off-by: felix <felix@call-with-current-continuation.org> +Signed-off-by: Peter Bex <peter@more-magic.net> +--- + egg-compile.scm | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +diff --git a/egg-compile.scm b/egg-compile.scm +index c1f2ceb0..9ba45681 100644 +--- a/egg-compile.scm ++++ b/egg-compile.scm +@@ -1129,7 +1129,7 @@ EOF + + ~a ~a~a + ~a ~a~a +-cat >~a~a <<ENDINFO ++cat >~a~a <<'ENDINFO' + ~aENDINFO~% + EOF + mkdir ddir qdir +@@ -1139,11 +1139,18 @@ EOF + (printf #<<EOF + + ~a ~a~a +-echo ~a >~a~a~% ++copy /y nul ~a~a~% ++~a + EOF + mkdir ddir qdir +- (string-intersperse (string-split infostr "\n") "^\n\n") +- ddir dest))))) ++ ddir dest ++ (string-intersperse (map (lambda (line) ++ (ensure-line-limit ++ (caretize (format "echo ~a >>~a~a" ++ line ddir dest)) ++ 8191 )) ++ (string-split infostr "\n")) ++ "\n")))))) + + ;;; some utilities for mangling + quoting + +@@ -1227,3 +1234,12 @@ EOF + (substring fname (add1 plen)))) + + (define (maybe f x) (if f (list x) '())) ++ ++(define (caretize str) ++ (string-translate* str '(("&" . "^&") ("^" . "^^") ("|" . "^|") ++ ("<" . "^<") (">" . "^>")))) ++ ++(define (ensure-line-limit str lim) ++ (when (>= (string-length str) lim) ++ (error "line length exceeds platform limit: " str)) ++ str) |