civodul pushed a commit to branch master
in repository guix.
commit c4a8762e529dc3f8af89dde5dbcbb82f2a4088a3
Author: Ludovic Courtès <[email protected]>
AuthorDate: Tue Jan 17 11:22:36 2023 +0100
debug-link: Protect against dangling symlinks.
Fixes <https://issues.guix.gnu.org/60584>.
Reported by Greg Hogan <[email protected]>
and Sébastien Rey-Coyrehourcq <[email protected]>.
* guix/build/debug-link.scm (find-elf-files): Wrap 'elf-file?' call in
'catch'.
---
guix/build/debug-link.scm | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/guix/build/debug-link.scm b/guix/build/debug-link.scm
index f3284f74c4..80941df2fc 100644
--- a/guix/build/debug-link.scm
+++ b/guix/build/debug-link.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Ludovic Courtès <[email protected]>
+;;; Copyright © 2018, 2023 Ludovic Courtès <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -175,7 +175,15 @@ directories."
outputs))
(append-map (lambda (directory)
- (filter elf-file?
+ (filter (lambda (file)
+ (catch 'system-error
+ (lambda ()
+ (elf-file? file))
+ (lambda args
+ ;; FILE might be a dangling symlink.
+ (if (= ENOENT (system-error-errno args))
+ #f
+ (apply throw args)))))
(with-error-to-port (%make-void-port "w")
(lambda ()
(find-files directory)))))