diff options
author | Ludovic Courtès <ludo@gnu.org> | 2023-01-17 11:22:36 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-01-17 16:05:20 +0100 |
commit | c4a8762e529dc3f8af89dde5dbcbb82f2a4088a3 (patch) | |
tree | 281e67574fb3c8c4db0b620ab810fe8fd387c5fc | |
parent | 79b11cafcfedf8a5751dacd21cbb5d5e8b4ec657 (diff) |
debug-link: Protect against dangling symlinks.
Fixes <https://issues.guix.gnu.org/60584>.
Reported by Greg Hogan <code@greghogan.com>
and Sébastien Rey-Coyrehourcq <sebastien.rey-coyrehourcq@univ-rouen.fr>.
* guix/build/debug-link.scm (find-elf-files): Wrap 'elf-file?' call in 'catch'.
-rw-r--r-- | guix/build/debug-link.scm | 12 |
1 files 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 <ludo@gnu.org> +;;; Copyright © 2018, 2023 Ludovic Courtès <ludo@gnu.org> ;;; ;;; 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))))) |