Projects
Mega:23.03
systemd
_service:tar_scm:backport-CVE-2021-3997-rm-rf-o...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-CVE-2021-3997-rm-rf-optionally-fsync-after-removing-directory-tree.patch of Package systemd
From 2426beacca09d84091759be45b25c88116302184 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Tue, 5 Oct 2021 10:32:56 +0200 Subject: [PATCH] rm-rf: optionally fsync() after removing directory tree (cherry picked from commit bdfe7ada0d4d66e6d6e65f2822acbb1ec230f9c2) Conflict:NA Reference:https://github.com/systemd/systemd/commit/2426beacca09d84091759be45b25c88116302184 --- src/shared/rm-rf.c | 3 +++ src/shared/rm-rf.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/shared/rm-rf.c b/src/shared/rm-rf.c index dffb9cf6ee..5ef7c662dd 100644 --- a/src/shared/rm-rf.c +++ b/src/shared/rm-rf.c @@ -250,6 +250,9 @@ int rm_rf_children( ret = r; } + if (FLAGS_SET(flags, REMOVE_SYNCFS) && syncfs(dirfd(d)) < 0 && ret >= 0) + ret = -errno; + return ret; } diff --git a/src/shared/rm-rf.h b/src/shared/rm-rf.h index 577a2795e0..24fd9a2aa2 100644 --- a/src/shared/rm-rf.h +++ b/src/shared/rm-rf.h @@ -14,6 +14,7 @@ typedef enum RemoveFlags { REMOVE_MISSING_OK = 1 << 4, /* If the top-level directory is missing, ignore the ENOENT for it */ REMOVE_CHMOD = 1 << 5, /* chmod() for write access if we cannot delete or access something */ REMOVE_CHMOD_RESTORE = 1 << 6, /* Restore the old mode before returning */ + REMOVE_SYNCFS = 1 << 7, /* syncfs() the root of the specified directory after removing everything in it */ } RemoveFlags; int unlinkat_harder(int dfd, const char *filename, int unlink_flags, RemoveFlags remove_flags); -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2