Safe passing of subprocess arguments - always.
This commit is contained in:
parent
ee8aa95e24
commit
7f7d1c43c8
3 changed files with 13 additions and 13 deletions
|
@ -73,12 +73,11 @@
|
|||
|
||||
;; Mailman-specific process output lines capture
|
||||
(define (get-mailman-output-lines bin . args)
|
||||
(get-process-output-lines
|
||||
(string-intersperse
|
||||
(cons (mailman-bin bin)
|
||||
args)
|
||||
" ")))
|
||||
|
||||
(apply
|
||||
get-process-output-lines
|
||||
(mailman-bin bin)
|
||||
args))
|
||||
|
||||
;; Returns the list of available lists
|
||||
(define (list-mailman-lists)
|
||||
(get-mailman-output-lines "list_lists" "-b"))
|
||||
|
|
|
@ -58,8 +58,8 @@
|
|||
|
||||
;; Very simple shell command wrapper that returns lines produced by
|
||||
;; given command. Dangerous - performs no argument escaping!
|
||||
(define (get-process-output-lines cmd)
|
||||
(let-values (((stdout stdin pid stderr) (process* cmd)))
|
||||
(define (get-process-output-lines cmd . args)
|
||||
(let-values (((stdout stdin pid stderr) (process* cmd args)))
|
||||
(close-output-port stdin)
|
||||
(let ((result (read-lines stdout)))
|
||||
(let-values (((a b c) (process-wait pid)))
|
||||
|
|
|
@ -71,11 +71,12 @@
|
|||
(lambda ()
|
||||
(let loop ((lines
|
||||
(get-process-output-lines
|
||||
(sprintf "git -C \"~A\" log -p -- \"~A\""
|
||||
(string-translate* (*members-directory*)
|
||||
'(("\"" . "\\\"")))
|
||||
(brmember-file-name mr)
|
||||
))))
|
||||
"git"
|
||||
"-C" (*members-directory*)
|
||||
"log"
|
||||
"-p"
|
||||
"--"
|
||||
(brmember-file-name mr))))
|
||||
(when (not (null? lines))
|
||||
(print (car lines))
|
||||
(loop (cdr lines))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue