unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros.
@ 2023-10-13 16:18 Tomas Volf
  2023-10-13 17:30 ` Mike Gran via Bug reports for GUILE, GNU's Ubiquitous Extension Language
  2024-01-29 13:28 ` bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros Ludovic Courtès
  0 siblings, 2 replies; 7+ messages in thread
From: Tomas Volf @ 2023-10-13 16:18 UTC (permalink / raw)
  To: 66531; +Cc: Tomas Volf

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.

This fixes bug 55344.

* module/ice-9/ftw.scm (getuid-or-false): Quote the (getuid).
(getgid-or-false): Quote the (getgid).
---
 module/ice-9/ftw.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/module/ice-9/ftw.scm b/module/ice-9/ftw.scm
index ac6aa6316..8496086a1 100644
--- a/module/ice-9/ftw.scm
+++ b/module/ice-9/ftw.scm
@@ -201,12 +201,12 @@
 
 (define-macro (getuid-or-false)
   (if (defined? 'getuid)
-      (getuid)
+      '(getuid)
       #f))
 
 (define-macro (getgid-or-false)
   (if (defined? 'getgid)
-      (getgid)
+      '(getgid)
       #f))
 
 (define (directory-files dir)
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-01-29 13:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-13 16:18 bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros Tomas Volf
2023-10-13 17:30 ` Mike Gran via Bug reports for GUILE, GNU's Ubiquitous Extension Language
2023-10-13 18:20   ` Tomas Volf
2023-10-25 14:01     ` Mike Gran via Bug reports for GUILE, GNU's Ubiquitous Extension Language
2023-11-29 16:11       ` Tomas Volf
2024-01-16 12:40       ` bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros., bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros., control message for bug #66531 Tomas Volf
2024-01-29 13:28 ` bug#66531: [PATCH] ftw: Fix getuid-or-false, getgid-or-false macros Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).