mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
Both macros were missing a quote for the procedure call, causing the actual return value to be compiled into the ftw.go, instead of the procedure call. Snippet from disassembly of ftw.go does confirm that: 55 (make-immediate 2 3990) ;; 997 at ice-9/ftw.scm:319:46 56 (make-long-immediate 1 120002) ;; 30000 at ice-9/ftw.scm:320:46 That effectively prevented ftw from entering directories without access for others. Simple reproduction: scheme@(guile-user)> ,use (ice-9 ftw) scheme@(guile-user)> (mkdir "/tmp/xxxx") scheme@(guile-user)> (chmod "/tmp/xxxx" #o0700) scheme@(guile-user)> (ftw "/tmp/xxxx" (lambda (_ __ f) (pk f) #t)) ;;; (directory-not-readable) $1 = #t scheme@(guile-user)> (system "ls -al /tmp/xxxx") total 0 drwx------ 1 wolf wolf 0 Oct 11 22:54 . drwxrwxrwt 1 root root 888 Oct 11 22:54 .. $2 = 0 The fix is to quote the procedure call, leading to the intended behavior. Fixes <https://bugs.gnu.org/55344>. * module/ice-9/ftw.scm (getuid-or-false): Quote the (getuid). (getgid-or-false): Quote the (getgid). * NEWS: Update. Signed-off-by: Ludovic Courtès <ludo@gnu.org> |
||
---|---|---|
.. | ||
peg | ||
and-let-star.scm | ||
arrays.scm | ||
atomic.scm | ||
binary-ports.scm | ||
boot-9.scm | ||
buffered-input.scm | ||
calling.scm | ||
ChangeLog-2008 | ||
command-line.scm | ||
common-list.scm | ||
compile-psyntax.scm | ||
control.scm | ||
copy-tree.scm | ||
curried-definitions.scm | ||
custom-ports.scm | ||
deprecated.scm | ||
documentation.scm | ||
eval-string.scm | ||
eval.scm | ||
exceptions.scm | ||
expect.scm | ||
fdes-finalizers.scm | ||
format.scm | ||
ftw.scm | ||
futures.scm | ||
gap-buffer.scm | ||
getopt-long.scm | ||
hash-table.scm | ||
hcons.scm | ||
history.scm | ||
i18n.scm | ||
iconv.scm | ||
lineio.scm | ||
list.scm | ||
local-eval.scm | ||
ls.scm | ||
match.scm | ||
match.upstream.scm | ||
networking.scm | ||
null.scm | ||
occam-channel.scm | ||
optargs.scm | ||
peg.scm | ||
poe.scm | ||
poll.scm | ||
popen.scm | ||
ports.scm | ||
posix.scm | ||
pretty-print.scm | ||
psyntax-pp.scm | ||
psyntax.scm | ||
q.scm | ||
quasisyntax.scm | ||
r5rs.scm | ||
r6rs-libraries.scm | ||
r7rs-libraries.scm | ||
rdelim.scm | ||
read.scm | ||
README | ||
receive.scm | ||
regex.scm | ||
runq.scm | ||
rw.scm | ||
safe-r5rs.scm | ||
safe.scm | ||
sandbox.scm | ||
save-stack.scm | ||
scm-style-repl.scm | ||
serialize.scm | ||
session.scm | ||
slib.scm | ||
soft-ports.scm | ||
stack-catch.scm | ||
streams.scm | ||
string-fun.scm | ||
suspendable-ports.scm | ||
test.scm | ||
textual-ports.scm | ||
threads.scm | ||
time.scm | ||
top-repl.scm | ||
unicode.scm | ||
vlist.scm | ||
weak-vector.scm |
This directory contains various bits of Guile Scheme code. Most of these are packaged as modules, with foo.scm implementing the module `(ice-9 foo)'. The non-module files are: boot-9.scm -- loaded on guile startup implements module system + lots of other stuff arrays.scm -- loaded by boot-9.scm networking.scm -- loaded by boot-9.scm posix.scm -- loaded by boot-9.scm r4rs.scm -- loaded by boot-9.scm