summaryrefslogtreecommitdiff
path: root/debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch')
-rw-r--r--debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch59
1 files changed, 0 insertions, 59 deletions
diff --git a/debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch b/debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch
deleted file mode 100644
index 44140fc2..00000000
--- a/debian/patches/0005-libdiskfs-add-permission-check-to-file_chflags.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 3ea1eb1af128d1a20949983d212ef529becc6a77 Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Tue, 10 Jun 2014 14:22:31 +0200
-Subject: [PATCH 5/5] libdiskfs: add permission check to file_chflags
-
-Only root is allowed to change the high 16 bits. The TODO entry says
-otherwise, but that must be a mistake. For reference, see the glibc
-sources, sysdeps/mach/hurd/bits/stat.h.
-
-* libdiskfs/file-chflags.c (diskfs_S_file_chflags): Add permission
-check.
-* TODO (libdiskfs): Remove entry.
----
- TODO | 2 --
- libdiskfs/file-chflags.c | 8 ++++++++
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/TODO b/TODO
-index d2500dc..0387e9f 100644
---- a/TODO
-+++ b/TODO
-@@ -108,8 +108,6 @@ See `tasks', the exported task list.
- Rename the rest to libhurdutil or somesuch.
-
- ** libdiskfs
--*** file_chflags does not do proper permission checking (non-root isn't
-- supposed to be able to change the low bits)
- *** Add the short-circuited-but-not-builtin translator startup code from
- dir-lookup to fsys_getroot. Compare and match carefully these two
- routines and then share common code.
-diff --git a/libdiskfs/file-chflags.c b/libdiskfs/file-chflags.c
-index 01dc495..a29ff07 100644
---- a/libdiskfs/file-chflags.c
-+++ b/libdiskfs/file-chflags.c
-@@ -23,8 +23,15 @@ kern_return_t
- diskfs_S_file_chflags (struct protid *cred,
- int flags)
- {
-+#define HI(X) ((X) & 0xffff0000u)
- CHANGE_NODE_FIELD (cred,
- ({
-+ /* Only root is allowed to change the high 16
-+ bits. */
-+ if ((HI (flags) != HI (np->dn_stat.st_flags))
-+ && ! idvec_contains (cred->user->uids, 0))
-+ return EPERM;
-+
- err = fshelp_isowner (&np->dn_stat, cred->user);
- if (!err)
- err = diskfs_validate_flags_change (np, flags);
-@@ -37,4 +44,5 @@ diskfs_S_file_chflags (struct protid *cred,
- diskfs_notice_filechange(np, FILE_CHANGED_META,
- 0, 0);
- }));
-+#undef HI
- }
---
-2.0.0
-