67 lines
1.8 KiB
C
67 lines
1.8 KiB
C
|
#ifndef _LINUX_ON_DEX_H
|
||
|
#define _LINUX_ON_DEX_H
|
||
|
|
||
|
#include <uapi/linux/capability.h>
|
||
|
#include <linux/cred.h>
|
||
|
#include <linux/android_aid.h> // load AID_INET
|
||
|
|
||
|
#define LOD_UID_PREFIX 0x61A8 //1638400000
|
||
|
#define CAP_LOD_SET ((kernel_cap_t){{ CAP_TO_MASK(CAP_CHOWN) \
|
||
|
| CAP_TO_MASK(CAP_DAC_OVERRIDE) \
|
||
|
| CAP_TO_MASK(CAP_FOWNER) \
|
||
|
| CAP_TO_MASK(CAP_KILL) \
|
||
|
| CAP_TO_MASK(CAP_SETGID) \
|
||
|
| CAP_TO_MASK(CAP_SETUID), \
|
||
|
0 } })
|
||
|
|
||
|
#define LOD_INVALID_ID ((u32)-1)
|
||
|
|
||
|
#define current_is_LOD() (((current_cred()->uid.val) >> 16) == LOD_UID_PREFIX)
|
||
|
#define cred_is_LOD(cred) ((((cred)->uid.val) >> 16) == LOD_UID_PREFIX)
|
||
|
#define inode_is_LOD(inode) ((((inode)->i_uid.val) >> 16) == LOD_UID_PREFIX)
|
||
|
|
||
|
//print out argument name
|
||
|
#define tostr__(x) # x
|
||
|
#define tostr_(x) tostr__(x)
|
||
|
|
||
|
#define uid_is_LOD(arg) __uid_is_LOD((arg), tostr_(arg))
|
||
|
#define gid_is_LOD(arg) __gid_is_LOD((arg), tostr_(arg))
|
||
|
|
||
|
static inline bool __uid_is_LOD(u32 id, char *id_name){
|
||
|
|
||
|
if ((id >> 16) == LOD_UID_PREFIX)
|
||
|
return true;
|
||
|
|
||
|
// Invalid UID is safe
|
||
|
if (id == LOD_INVALID_ID)
|
||
|
return true;
|
||
|
|
||
|
#ifndef CONFIG_SAMSUNG_PRODUCT_SHIP
|
||
|
printk(KERN_ERR "LOD: %s: PROC %s PID %d CURR_UID %d %s %d\n", __FUNCTION__,
|
||
|
current->comm, current->pid, current_cred()->uid.val, id_name, id);
|
||
|
#endif
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
static inline bool __gid_is_LOD(u32 id, char *id_name){
|
||
|
|
||
|
if ((id >> 16) == LOD_UID_PREFIX)
|
||
|
return true;
|
||
|
|
||
|
// Invalid UID is safe
|
||
|
if (id == LOD_INVALID_ID)
|
||
|
return true;
|
||
|
|
||
|
// INET gid is allowed for LOD
|
||
|
if (id == AID_INET.val)
|
||
|
return true;
|
||
|
|
||
|
#ifndef CONFIG_SAMSUNG_PRODUCT_SHIP
|
||
|
printk(KERN_ERR "LOD: %s: PROC %s PID %d CURR_UID %d %s %d\n", __FUNCTION__,
|
||
|
current->comm, current->pid, current_cred()->uid.val, id_name, id);
|
||
|
#endif
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
#endif /* !_LINUX_ON_DEX_H */
|