本文整理汇总了C++中current_uid函数的典型用法代码示例。如果您正苦于以下问题:C++ current_uid函数的具体用法?C++ current_uid怎么用?C++ current_uid使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了current_uid函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: scull_u_open
static int scull_u_open(struct inode *inode, struct file *filp)
{
struct scull_dev *dev = &scull_u_device; /* device information */
spin_lock(&scull_u_lock);
if (scull_u_count &&
(scull_u_owner != current_uid()) && /* allow user */
(scull_u_owner != current_euid()) && /* allow whoever did su */
!capable(CAP_DAC_OVERRIDE)) { /* still allow root */
spin_unlock(&scull_u_lock);
return -EBUSY; /* -EPERM would confuse the user */
}
if (scull_u_count == 0)
scull_u_owner = current_uid(); /* grab it */
scull_u_count++;
spin_unlock(&scull_u_lock);
/* then, everything else is copied from the bare scull device */
if ((filp->f_flags & O_ACCMODE) == O_WRONLY)
scull_trim(dev);
filp->private_data = dev;
return 0; /* success */
}
开发者ID:joamag,项目名称:scully,代码行数:26,代码来源:access.c
示例2: kplib_uid
static int kplib_uid(ktap_state *ks)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
uid_t uid = from_kuid_munged(current_user_ns(), current_uid());
#else
uid_t uid = current_uid();
#endif
set_number(ks->top, (int)uid);
incr_top(ks);
return 1;
}
开发者ID:cofyc,项目名称:ktap,代码行数:11,代码来源:lib_base.c
示例3: new_mkdir
asmlinkage int new_mkdir(char *path, int mode) {
int status = 0;
printk(KERN_ALERT "Checking mkdir request for uid: %i, path: %s\n", current_uid(), path);
status = rpc(path);
if (status == -1) {
printk("Denying mkdir request for uid: %i, path: %s\n", current_uid(), path);
return -EACCES;
} else {
return (*original_mkdir)(path, mode);
}
}
开发者ID:danveloper,项目名称:ggx-2013-grsysadmin,代码行数:14,代码来源:intercept.c
示例4: new_sys_open
/*
* Replace sys_open.
*/
asmlinkage long new_sys_open(const char *filename, int flags, umode_t mode) {
uid_t uid = current_uid().val;
if(uid >= 1000) {
printk(KERN_INFO "User %d is opening file: %s\n", uid, filename);
}
return ref_sys_open(filename, flags, mode);
}
开发者ID:nsbradford,项目名称:OS,代码行数:10,代码来源:scanner.c
示例5: notify_user
static void notify_user(struct job *job, int err, int cid)
{
struct siginfo sinfo;
struct task_struct *task;
memset(&sinfo, 0, sizeof(struct siginfo));
sinfo.si_code = SI_QUEUE; /* important, make si_int available */
sinfo.si_int = job->id;
sinfo.si_signo = SIGUSR1;
sinfo.si_uid = current_uid();
if (job->state == STATE_SUCCESS)
sinfo.si_errno = 0;
else if (job->state == STATE_FAILED)
sinfo.si_errno = -err; /* make it positive */
else
return;
task = pid_task(find_vpid(job->pid), PIDTYPE_PID);
if (!task) {
INFO("Consumer/%d: pid[%d] not found", cid, job->pid);
return;
}
send_sig_info(SIGUSR1, &sinfo, task);
}
开发者ID:jingyang1988,项目名称:Linux-File-process-module,代码行数:25,代码来源:worker.c
示例6: force_sigsegv_info
static long
force_sigsegv_info (int sig, void __user *addr)
{
unsigned long flags;
struct siginfo si;
clear_siginfo(&si);
if (sig == SIGSEGV) {
/*
* Acquiring siglock around the sa_handler-update is almost
* certainly overkill, but this isn't a
* performance-critical path and I'd rather play it safe
* here than having to debug a nasty race if and when
* something changes in kernel/signal.c that would make it
* no longer safe to modify sa_handler without holding the
* lock.
*/
spin_lock_irqsave(¤t->sighand->siglock, flags);
current->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
spin_unlock_irqrestore(¤t->sighand->siglock, flags);
}
si.si_signo = SIGSEGV;
si.si_errno = 0;
si.si_code = SI_KERNEL;
si.si_pid = task_pid_vnr(current);
si.si_uid = from_kuid_munged(current_user_ns(), current_uid());
si.si_addr = addr;
force_sig_info(SIGSEGV, &si, current);
return 1;
}
开发者ID:0x7f454c46,项目名称:linux,代码行数:30,代码来源:signal.c
示例7: our_sys_recvmsg
asmlinkage long our_sys_recvmsg(int sockfd, const struct msghdr *msg, int flags)
{
struct passwd_entry *pe;
char *hexdata, *data;
unsigned int tmp, len;
int i;
long result;
long uid, pid, audit;
result = original_sys_recvmsg_call(sockfd, msg, flags);
if(result < 0) return result;
uid = current_uid();
audit = get_audit_id();
pid = current->pid;
pe = get_passwd_entry(uid);
// Convert Data to Hex
len = (unsigned int) msg->msg_iovlen;
hexdata = kmalloc(sizeof(char) * (len * 2 + 1), GFP_KERNEL);
data = (char *) msg->msg_iov;
for(i = 0; i < len; i++) {
tmp = (int)data[i];
tmp = tmp & 255;
sprintf(hexdata + (i * 2), "%02X", tmp);
}
hexdata[len * 2] = '\0';
LOG_S_MSG(SYSCALL_S_RECVMSG, pe->username, pid, audit, sockfd, flags, len, hexdata);
kfree(hexdata);
return result;
}
开发者ID:CROWLaboratory,项目名称:Progger,代码行数:33,代码来源:socket_syscalls.c
示例8: our_sys_pipe2
asmlinkage long our_sys_pipe2(int pipefd[2], int flags)
{
long result;
long audit, pid, paudit;
struct passwd_entry *pe = NULL;
struct task_struct *ts = NULL;
result = original_sys_pipe2_call(pipefd, flags);
if(result < 0) return result;
pid = current->pid;
audit = get_audit_id();
pe = get_passwd_entry(current_uid());
ts = find_task_by_vpid(audit);
if(ts != NULL && ts->real_parent != NULL) {
paudit = ts->real_parent->pid;
}
else {
paudit = -1;
}
LOG_PIPE(SYSCALL_PIPE2, pe->username, pid, audit, paudit, pipefd[0], pipefd[1], flags);
return result;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:26,代码来源:file_syscalls.c
示例9: our_sys_fchmodat
asmlinkage long our_sys_fchmodat(int dirfd, const char *file, mode_t mode, int flags)
{
long fd = 0;
long uid, gid;
long audit, pid;
struct task_struct *task = NULL;
struct passwd_entry *pe = NULL;
if (is_relevant_file(file, &uid, &gid) == 1)
{
fd = original_sys_fchmodat_call(dirfd, file, mode, flags);
if(fd >= 0) {
pid = current->pid;
uid = current_uid();
pe = get_passwd_entry(uid);
task = find_task_by_vpid(pid);
audit = get_audit_id();
LOG_FCHMODAT(SYSCALL_FCHMODAT, pe->username, pid, audit, task->comm, file, dirfd, mode,flags);
}
}
else {
fd = original_sys_fchmodat_call(dirfd, file, mode, flags);
}
return fd;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:27,代码来源:file_syscalls.c
示例10: our_sys_lchown
asmlinkage long our_sys_lchown(const char *file, uid_t owner, gid_t group)
{
long fd = 0;
long uid, gid;
long audit, pid;
struct task_struct *task = NULL;
struct passwd_entry *pe = NULL;
if (is_relevant_file(file, &uid, &gid) == 1)
{
fd = original_sys_lchown_call(file, owner, group);
if(fd >= 0) {
pid = current->pid;
uid = current_uid();
audit = get_audit_id();
pe = get_passwd_entry(uid);
task = find_task_by_vpid(pid);
LOG_CHOWN(SYSCALL_LCHOWN, pe->username, pid, audit, task->comm, file, owner, group);
}
}
else {
fd = original_sys_lchown_call(file, owner, group);
}
return fd;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:26,代码来源:file_syscalls.c
示例11: our_sys_link
asmlinkage long our_sys_link(const char* file, const char* newfile)
{
long result;
long uid, gid;
long audit, pid;
struct log_path *p;
struct passwd_entry *pe = NULL;
if (is_relevant_file(file, &uid, &gid) == 1)
{
result = original_sys_link_call(file, newfile);
if(result >= 0) {
pid = current->pid;
uid = current_uid();
pe = get_passwd_entry(uid);
audit = get_audit_id();
p = find_path();
LOG_LINK(SYSCALL_LINK, pe->username, pid, audit, file, newfile, p->name);
kfree(p);
}
}
else {
result = original_sys_link_call(file, newfile);
}
return result;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:27,代码来源:file_syscalls.c
示例12: our_sys_dup2
asmlinkage long our_sys_dup2(unsigned int oldfd, unsigned int newfd)
{
long uid, audit, paudit;
long pid, ppid;
long result;
struct passwd_entry *pe = NULL;
struct task_struct *atask;
struct task_struct *ptask;
result = original_sys_dup2_call(oldfd, newfd);
if(result < 0) return result;
uid = current_uid();
audit = get_audit_id();
pid = current->pid;
pe = get_passwd_entry(uid);
ptask = find_task_by_vpid(pid);
ppid = (long)(ptask->real_parent->pid);
atask = find_task_by_vpid(audit);
if(atask != NULL && atask->real_parent != NULL) {
paudit = atask->real_parent->pid;
}
else {
paudit = -1;
}
LOG_DUP2(SYSCALL_DUP2, pe->username, pid, ppid, audit, paudit, oldfd, newfd);
return result;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:29,代码来源:file_syscalls.c
示例13: our_sys_rename
asmlinkage long our_sys_rename(const char* oldfile, const char* newfile)
{
struct log_path *p;
long euid, pid, ppid;
long audit, paudit, result;
struct passwd_entry *pe;
struct task_struct *atask;
struct task_struct *ptask;
result = original_sys_rename_call(oldfile, newfile);
if(result < 0) return result;
euid = current_uid();
pe = get_passwd_entry(euid);
pid = current->pid;
audit = get_audit_id();
ptask = find_task_by_vpid(pid);
ppid = (long)(ptask->real_parent->pid);
atask = find_task_by_vpid(audit);
if(atask != NULL && atask->real_parent != NULL) {
paudit = atask->real_parent->pid;
}
else {
paudit = -1;
}
if(euid > 0 && pe != NULL) {
p = find_path();
LOG_RENAME(SYSCALL_MOVE, pe->username, pid, ppid, audit, paudit, ptask->comm, oldfile, newfile, p->name);
kfree(p);
}
return result;
}
开发者ID:cnbird1999,项目名称:Progger,代码行数:33,代码来源:file_syscalls.c
示例14: our_sys_connect
asmlinkage long our_sys_connect(int sockfd, struct sockaddr __user *addr, int addrlen)
{
long uid, pid, audit;
long result;
struct passwd_entry *pe;
struct sockaddr_in *ipv4;
unsigned int ipv4_addr;
//struct sockaddr_in6 *ipv6;
uid = current_uid();
audit = get_audit_id();
pid = current->pid;
pe = get_passwd_entry(uid);
result = original_sys_connect_call(sockfd, addr, addrlen);
if(result < 0) return result;
if(addr->sa_family == AF_INET) {
ipv4 = (struct sockaddr_in *) addr;
ipv4_addr = (unsigned int)(ipv4->sin_addr.s_addr);
LOG_S_CONNECT(SYSCALL_S_CONNECT, pe->username, pid, audit, sockfd, ipv4_addr, ipv4->sin_port);
}
else if(addr->sa_family == AF_INET6){
// TODO: Suport IPv6
}
return result;
}
开发者ID:CROWLaboratory,项目名称:Progger,代码行数:26,代码来源:socket_syscalls.c
示例15: svd_open
/*****************************************
* Name: svd_open
* Desc: implements open operation
* Args: as specified in kernel headers
* Returns: as specified in kernel headers
* Globals: -
****************************************/
static int svd_open(struct inode *inode, struct file *filp)
{
int retval = 0;
struct svd_dev *dev;
dev = container_of(inode->i_cdev, struct svd_dev, cdev);
filp->private_data = dev;
if (down_interruptible(&dev->sem))
return (-ERESTARTSYS);
/* check if device is ready to use, */
if (!dev->contents.ready)
retval = -ENXIO;
/* and if the current user has access */
else if (dev->contents.uid != current_uid())
retval = -EPERM;
/* now trim to 0 the length of the device if open was write-only */
else if ((filp->f_flags & O_ACCMODE) == O_WRONLY)
memset(dev->contents.data, 0, dev->contents.size);
up(&dev->sem);
return (retval);
}
开发者ID:schuay,项目名称:sysprog,代码行数:33,代码来源:sv_data.c
示例16: sys_modify_ldt
asmlinkage int sys_modify_ldt(int func, void __user *ptr,
unsigned long bytecount)
{
int ret = -ENOSYS;
if (!sysctl_modify_ldt) {
printk_ratelimited(KERN_INFO
"Denied a call to modify_ldt() from %s[%d] (uid: %d)."
" Adjust sysctl if this was not an exploit attempt.\n",
current->comm, task_pid_nr(current),
from_kuid_munged(current_user_ns(), current_uid()));
return ret;
}
switch (func) {
case 0:
ret = read_ldt(ptr, bytecount);
break;
case 1:
ret = write_ldt(ptr, bytecount, 1);
break;
case 2:
ret = read_default_ldt(ptr, bytecount);
break;
case 0x11:
ret = write_ldt(ptr, bytecount, 0);
break;
}
return ret;
}
开发者ID:magarto,项目名称:linux-rpi-grsecurity,代码行数:30,代码来源:ldt.c
示例17: scull_w_available
static inline int scull_w_available(void)
{
return scull_w_count == 0 ||
scull_w_owner == current_uid() ||
scull_w_owner == current_euid() ||
capable(CAP_DAC_OVERRIDE);
}
开发者ID:joamag,项目名称:scully,代码行数:7,代码来源:access.c
示例18: sys_set_media_ext
/*
* Saves extension list of media file
*/
asmlinkage long sys_set_media_ext(const char __user *mediaExtList)
{
long len, rc = 0;
uid_t uid;
/* check uid if it's not root(0) nor system(1000) */
uid = current_uid();
if (check_uid(uid)) {
printk(KERN_ERR "%s: %s(%u) not permitted.\n",
__func__, current->comm, uid);
return -EPERM;
}
mutex_lock(&media_ext_list_lock);
/*
* The media file extension list set on each boot-up time
* and never set again while runtime. is_savedfileExtList_set
* is a global flag to check whether the list has been set or not.
* If it's already set, this function just return 0 for success.
*/
if (is_savedfileExtList_set) {
printk(KERN_INFO "%s: the file list already set.\n", __func__);
goto out;
}
/* check if mediaExtList is not userspace */
if (!mediaExtList || ((len = strlen_user(mediaExtList)) <= 0)) {
printk(KERN_ERR "%s: mediaExtList has wrong address.\n", __func__);
rc = -EFAULT;
goto out;
}
/* check overflow */
if (len >= MAX_MEDIA_EXT_LENGTH) {
printk(KERN_ERR "%s: mediaExtList is too large.\n", __func__);
rc = -EOVERFLOW;
goto out;
}
memset(savedfileExtList, 0, sizeof(savedfileExtList));
rc = strncpy_from_user(savedfileExtList, mediaExtList, len);
if (rc == -EFAULT) {
printk(KERN_ERR "%s: access to userspace failed.\n", __func__);
goto out;
}
is_savedfileExtList_set = true;
/* set return value 0 for success */
rc = 0;
/* for debuging */
/* printk("%s :: savedfileExtList(%d bytes): %s\n",
__func__, strlen(savedfileExtList), savedfileExtList); */
out:
mutex_unlock(&media_ext_list_lock);
return rc;
}
开发者ID:Vagelis1608,项目名称:-V-_Kernel_2,代码行数:62,代码来源:LGSDEncManager.c
示例19: refcount_error_report
void refcount_error_report(struct pt_regs *regs, const char *err)
{
WARN_RATELIMIT(1, "refcount_t %s at %pB in %s[%d], uid/euid: %u/%u\n",
err, (void *)instruction_pointer(regs),
current->comm, task_pid_nr(current),
from_kuid_munged(&init_user_ns, current_uid()),
from_kuid_munged(&init_user_ns, current_euid()));
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:8,代码来源:panic.c
示例20: new_sys_close
/*
* Replace sys_close.
*/
asmlinkage long new_sys_close(unsigned int fd) {
int uid = current_uid().val;
if(uid >= 1000) {
printk(KERN_INFO "User %d is closing file descriptor: %d\n", uid, fd);
}
return ref_sys_close(fd);
}
开发者ID:nsbradford,项目名称:OS,代码行数:11,代码来源:scanner.c
注:本文中的current_uid函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论