[ SYSTEM ]: Linux srv.persadacompanies.com 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
[ SERVER ]: Apache | PHP: 8.4.19
[ USER ]: persadamedika | IP: 45.64.1.108
GEFORCE FILE MANAGER
/
usr
/
src
/
file_protector-1.1-1569
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📁 common
SET
[ DEL ]
📁 ftrace_hooks
SET
[ DEL ]
📁 lsm_hooks
SET
[ DEL ]
📁 syscall_hooks
SET
[ DEL ]
📁 transport
SET
[ DEL ]
📄 Kbuild
10,360 B
SET
[ EDIT ]
|
[ DEL ]
📄 Makefile
2,282 B
SET
[ EDIT ]
|
[ DEL ]
📄 compat.c
8,577 B
SET
[ EDIT ]
|
[ DEL ]
📄 compat.h
11,763 B
SET
[ EDIT ]
|
[ DEL ]
📄 debug.h
3,649 B
SET
[ EDIT ]
|
[ DEL ]
📄 dkms.conf
146 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_contexts.c
51,205 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_contexts.h
2,886 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_contexts_priv.h
5,546 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_handle_tools.h
2,207 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_key_tools.h
869 B
SET
[ EDIT ]
|
[ DEL ]
📄 file_path_tools.h
2,140 B
SET
[ EDIT ]
|
[ DEL ]
📄 hashtable_compat.h
2,798 B
SET
[ EDIT ]
|
[ DEL ]
📄 hook_trampoline_common.h
4,395 B
SET
[ EDIT ]
|
[ DEL ]
📄 interval_tree.h
779 B
SET
[ EDIT ]
|
[ DEL ]
📄 memory.h
1,401 B
SET
[ EDIT ]
|
[ DEL ]
📄 module.c
1,906 B
SET
[ EDIT ]
|
[ DEL ]
📄 module_ref.h
421 B
SET
[ EDIT ]
|
[ DEL ]
📄 module_rundown_protection.c
3,731 B
SET
[ EDIT ]
|
[ DEL ]
📄 module_rundown_protection.h
743 B
SET
[ EDIT ]
|
[ DEL ]
📄 path_tools.h
5,421 B
SET
[ EDIT ]
|
[ DEL ]
📄 rundown_protection.c
4,301 B
SET
[ EDIT ]
|
[ DEL ]
📄 rundown_protection.h
2,899 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_common.h
4,331 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_fp_properties.h
858 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_fp_properties_x.h
18,543 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_fp_value_types.h
515 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_fp_value_types_x.h
1,279 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_size.h
4,253 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_templates.h
2,452 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_writer.h
6,807 B
SET
[ EDIT ]
|
[ DEL ]
📄 si_writer_common.h
10,696 B
SET
[ EDIT ]
|
[ DEL ]
📄 stringify.h
261 B
SET
[ EDIT ]
|
[ DEL ]
📄 task_info_map.c
16,847 B
SET
[ EDIT ]
|
[ DEL ]
📄 task_info_map.h
6,386 B
SET
[ EDIT ]
|
[ DEL ]
📄 task_tools.h
1,370 B
SET
[ EDIT ]
|
[ DEL ]
📄 tracepoints.c
3,668 B
SET
[ EDIT ]
|
[ DEL ]
📄 tracepoints.h
299 B
SET
[ EDIT ]
|
[ DEL ]
📄 write_protection.h
2,257 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: path_tools.h
/** @file path_tools.h @brief Tools for working with 'struct path' @details Copyright (c) 2024 Acronis International GmbH @author Bruce Wang (bruce.wang@acronis.com) @since $Id: $ */ #pragma once #include "file_contexts.h" #include "file_key_tools.h" #include <linux/fcntl.h> #include <linux/magic.h> static inline bool make_file_context_info(file_context_info_t *info , const struct path *path , int flags , uint64_t low, uint64_t high , uint64_t pid_version) { if (!path || !path->dentry || !path->dentry->d_inode) { return false; } make_key_from_inode(&info->msg_info.key.file_key, path->dentry->d_inode); #ifdef HAVE_INODE_GET_MTIME info->msg_info.key.i_mtime.tv_sec = inode_get_mtime(path->dentry->d_inode).tv_sec; info->msg_info.key.i_mtime.tv_nsec = inode_get_mtime(path->dentry->d_inode).tv_nsec; #else info->msg_info.key.i_mtime.tv_sec = path->dentry->d_inode->i_mtime.tv_sec; info->msg_info.key.i_mtime.tv_nsec = path->dentry->d_inode->i_mtime.tv_nsec; #endif #ifdef HAVE_INODE_GET_CTIME info->msg_info.key.i_ctime.tv_sec = inode_get_ctime(path->dentry->d_inode).tv_sec; info->msg_info.key.i_ctime.tv_nsec = inode_get_ctime(path->dentry->d_inode).tv_nsec; #else info->msg_info.key.i_ctime.tv_sec = path->dentry->d_inode->i_ctime.tv_sec; info->msg_info.key.i_ctime.tv_nsec = path->dentry->d_inode->i_ctime.tv_nsec; #endif info->pid_version = pid_version; if ((flags & O_ACCMODE) <= O_RDWR) { flags += 1; } info->flags = flags; info->low = low; info->high = high; return true; } static inline bool make_file_context_info_with_inode(file_context_info_t *info, const struct inode *inode, uint64_t unique_pid) { make_key_from_inode(&info->msg_info.key.file_key, inode); #ifdef HAVE_INODE_GET_MTIME info->msg_info.key.i_mtime.tv_sec = inode_get_mtime(inode).tv_sec; info->msg_info.key.i_mtime.tv_nsec = inode_get_mtime(inode).tv_nsec; #else info->msg_info.key.i_mtime.tv_sec = inode->i_mtime.tv_sec; info->msg_info.key.i_mtime.tv_nsec = inode->i_mtime.tv_nsec; #endif #ifdef HAVE_INODE_GET_CTIME info->msg_info.key.i_ctime.tv_sec = inode_get_ctime(inode).tv_sec; info->msg_info.key.i_ctime.tv_nsec = inode_get_ctime(inode).tv_nsec; #else info->msg_info.key.i_ctime.tv_sec = inode->i_ctime.tv_sec; info->msg_info.key.i_ctime.tv_nsec = inode->i_ctime.tv_nsec; #endif // currently this function uses unique_pid only info->unique_pid = unique_pid; return true; } #ifndef NSFS_MAGIC #define NSFS_MAGIC 0x6e736673 #endif #ifndef SYSFS_MAGIC #define SYSFS_MAGIC 0x62656572 #endif #ifndef PROC_SUPER_MAGIC #define PROC_SUPER_MAGIC 0x9fa0 #endif #ifndef DEBUGFS_MAGIC #define DEBUGFS_MAGIC 0x64626720 #endif #ifndef SECURITYFS_MAGIC #define SECURITYFS_MAGIC 0x73636673 #endif #ifndef CGROUP_SUPER_MAGIC #define CGROUP_SUPER_MAGIC 0x27e0eb #endif #ifndef CGROUP2_SUPER_MAGIC #define CGROUP2_SUPER_MAGIC 0x63677270 #endif #ifndef BPF_FS_MAGIC #define BPF_FS_MAGIC 0xcafe4a11 #endif #ifndef TRACEFS_MAGIC #define TRACEFS_MAGIC 0x74726163 #endif #ifndef FUSECTL_SUPER_MAGIC #define FUSECTL_SUPER_MAGIC 0x65735543 #endif #ifndef PSTOREFS_MAGIC #define PSTOREFS_MAGIC 0x6165676C #endif #ifndef CONFIGFS_MAGIC #define CONFIGFS_MAGIC 0x62656570 #endif #ifndef HUGETLBFS_MAGIC #define HUGETLBFS_MAGIC 0x958458f6 #endif #ifndef MQUEUE_MAGIC #define MQUEUE_MAGIC 0x19800202 #endif #ifndef DEVPTS_SUPER_MAGIC #define DEVPTS_SUPER_MAGIC 0x1cd1 #endif #ifndef SELINUX_MAGIC #define SELINUX_MAGIC 0xf97cff8c #endif static inline bool inode_is_usable(const struct inode *inode) { if (!inode) { return false; } if (!inode->i_sb) { return false; } return true; } // Checks for bare minimum requirements for 'path' to be any sort of reasonable static inline bool path_is_usable(const struct path *path) { struct dentry *dentry; if (!path->mnt) return false; dentry = path->dentry; if (!dentry) { return false; } return inode_is_usable(dentry->d_inode); } static inline int magic_ok(unsigned long magic) { return magic != BPF_FS_MAGIC && magic != CGROUP_SUPER_MAGIC && magic != CGROUP2_SUPER_MAGIC && magic != CONFIGFS_MAGIC && magic != DEBUGFS_MAGIC && magic != DEVPTS_SUPER_MAGIC && magic != FUSECTL_SUPER_MAGIC && magic != HUGETLBFS_MAGIC && magic != MQUEUE_MAGIC && magic != NSFS_MAGIC && magic != PROC_SUPER_MAGIC && magic != PSTOREFS_MAGIC && magic != SECURITYFS_MAGIC && magic != SELINUX_MAGIC && magic != SYSFS_MAGIC && magic != TRACEFS_MAGIC ; } static inline int sb_ok(const struct super_block *sb) { return sb && magic_ok(sb->s_magic); } static inline bool check_if_usable_inode_valid(const struct inode *inode) { umode_t mode; if (!sb_ok(inode->i_sb)) { return false; } mode = inode->i_mode; if ((S_ISREG(mode)) || (S_ISDIR(mode))) return true; else return false; } static inline bool inode_is_valid(const struct inode *inode) { if (!inode_is_usable(inode)) { return false; } return check_if_usable_inode_valid(inode); } static inline bool path_is_valid(const struct path *path) { if (!path_is_usable(path)) { return false; } return check_if_usable_inode_valid(path->dentry->d_inode); } static inline bool file_is_valid(struct file* f) { return path_is_valid(&f->f_path); }