mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
ftw: Fix getuid-or-false, getgid-or-false macros.
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>
This commit is contained in:
parent
0933791c49
commit
b6866ded2b
2 changed files with 4 additions and 2 deletions
2
NEWS
2
NEWS
|
@ -41,6 +41,8 @@ the compiler reports it as "possibly unused".
|
||||||
(<https://bugs.gnu.org/55356>)
|
(<https://bugs.gnu.org/55356>)
|
||||||
** 'read-u8' in (scheme base) now defaults to (current-input-port)
|
** 'read-u8' in (scheme base) now defaults to (current-input-port)
|
||||||
(<https://bugs.gnu.org/62690>)
|
(<https://bugs.gnu.org/62690>)
|
||||||
|
** 'ftw' now correctly deals with directory permissions
|
||||||
|
(<https://bugs.gnu.org/55344>)
|
||||||
** Hashing of UTF-8 symbols with non-ASCII characters avoids corruption
|
** Hashing of UTF-8 symbols with non-ASCII characters avoids corruption
|
||||||
(<https://bugs.gnu.org/56413>)
|
(<https://bugs.gnu.org/56413>)
|
||||||
|
|
||||||
|
|
|
@ -201,12 +201,12 @@
|
||||||
|
|
||||||
(define-macro (getuid-or-false)
|
(define-macro (getuid-or-false)
|
||||||
(if (defined? 'getuid)
|
(if (defined? 'getuid)
|
||||||
(getuid)
|
'(getuid)
|
||||||
#f))
|
#f))
|
||||||
|
|
||||||
(define-macro (getgid-or-false)
|
(define-macro (getgid-or-false)
|
||||||
(if (defined? 'getgid)
|
(if (defined? 'getgid)
|
||||||
(getgid)
|
'(getgid)
|
||||||
#f))
|
#f))
|
||||||
|
|
||||||
(define (directory-files dir)
|
(define (directory-files dir)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue