• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ current_euid函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中current_euid函数的典型用法代码示例。如果您正苦于以下问题:C++ current_euid函数的具体用法?C++ current_euid怎么用?C++ current_euid使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了current_euid函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: f_permission

static int f_permission(struct inode *inode, int mask, unsigned int unused)
{
    int i;

    /* If not root, deny access */
    if (current_euid() != 0)
	return -EACCES;
    /* "control" file can only be written to */
    if (inode->i_ino == proc_net_firm_action->low_ino) {
	if (mask & MAY_WRITE)
	    return 0;
	else
	    return -EACCES;
    }
    /*
     * Test if it was any of the rule files. Always allows reading,
     * but writing only if the flow is not started.
     */
    for (i = 0; f_flowtable[i].name != NULL; i++) {
	if (inode->i_ino == f_flowtable[i].pdir->low_ino) {
	    if (mask & MAY_READ)
		return 0;
	    if ((mask & MAY_WRITE) && !f_flowtable[i].started)
		return 0;
	    else
		return -EACCES;
	}
    }
    /* For any other file. Should not reach this point. */
    printk(KERN_DEBUG
	   "firm_vm: f_permission called for an invalid file.\n");
    return -EACCES;
}
开发者ID:drebes,项目名称:firmament,代码行数:33,代码来源:firm_vm.c


示例2: proc_overview_seq_show

static int proc_overview_seq_show(struct seq_file *s, void *v) {
	struct crypto_db *db;
	struct crypto_context *context;
	size_t ix;

	if(v == NULL) {
		return -EINVAL;
	}

	if(mutex_lock_interruptible(&get_cryptodev()->crypto_dbs_mutex)) {
		return -ERESTARTSYS;
	}
	db = get_or_create_crypto_db(&get_cryptodev()->crypto_dbs,
				     current_euid());
	mutex_unlock(&get_cryptodev()->crypto_dbs_mutex);
	if(NULL == db) {
		return -ENOMEM;
	}

	context = v;
	ix = context - db->contexts;
	if(context->is_active) {
		seq_printf(s, "%zd\tdes\t%ld\t%ld\t%ld\n",
			   ix, context->added_time,
			   context->encoded_count, context->decoded_count);
	}

	return 0;
}
开发者ID:xyzzyz,项目名称:cryptodev,代码行数:29,代码来源:crypto_proc.c


示例3: 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


示例4: check_quotactl_permission

static int check_quotactl_permission(struct super_block *sb, int type, int cmd,
				     qid_t id)
{
	switch (cmd) {
	/* these commands do not require any special privilegues */
	case Q_GETFMT:
	case Q_SYNC:
	case Q_GETINFO:
	case Q_XGETQSTAT:
	case Q_XQUOTASYNC:
		break;
	/* allow to query information for dquots we "own" */
	case Q_GETQUOTA:
	case Q_XGETQUOTA:
		if ((type == USRQUOTA && current_euid() == id) ||
		    (type == GRPQUOTA && in_egroup_p(id)))
			break;
		/*FALLTHROUGH*/
	default:
		if (!capable(CAP_SYS_ADMIN))
			return -EPERM;
	}

	return security_quotactl(cmd, type, id, sb);
}
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:25,代码来源:quota.c


示例5: ecryptfs_miscdev_poll

/**
 * ecryptfs_miscdev_poll
 * @file: dev file (ignored)
 * @pt: dev poll table (ignored)
 *
 * Returns the poll mask
 */
static unsigned int
ecryptfs_miscdev_poll(struct file *file, poll_table *pt)
{
	struct ecryptfs_daemon *daemon;
	unsigned int mask = 0;
	uid_t euid = current_euid();
	int rc;

	mutex_lock(&ecryptfs_daemon_hash_mux);
	/* TODO: Just use file->private_data? */
	rc = ecryptfs_find_daemon_by_euid(&daemon, euid, current_user_ns());
	BUG_ON(rc || !daemon);
	mutex_lock(&daemon->mux);
	mutex_unlock(&ecryptfs_daemon_hash_mux);
	if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) {
		printk(KERN_WARNING "%s: Attempt to poll on zombified "
		       "daemon\n", __func__);
		goto out_unlock_daemon;
	}
	if (daemon->flags & ECRYPTFS_DAEMON_IN_READ)
		goto out_unlock_daemon;
	if (daemon->flags & ECRYPTFS_DAEMON_IN_POLL)
		goto out_unlock_daemon;
	daemon->flags |= ECRYPTFS_DAEMON_IN_POLL;
	mutex_unlock(&daemon->mux);
	poll_wait(file, &daemon->wait, pt);
	mutex_lock(&daemon->mux);
	if (!list_empty(&daemon->msg_ctx_out_queue))
		mask |= POLLIN | POLLRDNORM;
out_unlock_daemon:
	daemon->flags &= ~ECRYPTFS_DAEMON_IN_POLL;
	mutex_unlock(&daemon->mux);
	return mask;
}
开发者ID:AndreiLux,项目名称:Perseus-S3,代码行数:41,代码来源:miscdev.c


示例6: kbasep_am_i_root

static inline bool kbasep_am_i_root(void)
{
#if KBASE_HWCNT_DUMP_BYPASS_ROOT
	return true;
#else
	/* Check if root */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
	if (uid_eq(current_euid(), GLOBAL_ROOT_UID))
		return true;
#else
	if (current_euid() == 0)
		return true;
#endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)*/
	return false;
#endif /*KBASE_HWCNT_DUMP_BYPASS_ROOT*/
}
开发者ID:GAXUSXX,项目名称:G935FGaXusKernel2,代码行数:16,代码来源:mali_kbase_security.c


示例7: write_dek_packet

int write_dek_packet(char *dest,
		struct ecryptfs_crypt_stat *crypt_stat,
		size_t *written) {
	*written = 0;
	dest[(*written)++] = ECRYPTFS_DEK_PACKET_TYPE;

	memset(dest + *written, 0, PKG_NAME_SIZE);
	memcpy(dest + *written, current->comm, PKG_NAME_SIZE);
	(*written) += PKG_NAME_SIZE;

	put_unaligned_be32(current_euid(), dest + *written);
	(*written) += 4;

	memset(dest + *written, 0, DEK_MAXLEN);
	if (crypt_stat->flags & ECRYPTFS_DEK_IS_SENSITIVE) {
		put_unaligned_be32(crypt_stat->sdp_dek.type, dest + *written);
		(*written) += 4;
		put_unaligned_be32(crypt_stat->sdp_dek.len, dest + *written);
		(*written) += 4;
		memcpy(dest + *written, crypt_stat->sdp_dek.buf, crypt_stat->sdp_dek.len);
		(*written) += crypt_stat->sdp_dek.len;
	}

	return 0;
}
开发者ID:StarKissed,项目名称:Note-4-AEL-Kernel,代码行数:25,代码来源:ecryptfs_dek.c


示例8: check_permissions

static inline int check_permissions(void)
{
	int rc = 0;
	if (!current_euid() || in_egroup_p(AID_NET_RAW))
		rc = 1;
	return rc;
}
开发者ID:androidrbox,项目名称:android_kernel_amazon_bueller,代码行数:7,代码来源:ipc_socket.c


示例9: interceptor_proc_entry_iop_permission

static int interceptor_proc_entry_iop_permission(struct inode *inode,
						 int op
#ifdef LINUX_INODE_OPERATION_PERMISSION_HAS_NAMEIDATA
						 , struct nameidata *nd
#endif /* LINUX_INODE_OPERATION_PERMISSION_HAS_NAMEIDATA */
#ifdef LINUX_INODE_OPERATION_PERMISSION_HAS_UINT
						 , unsigned int ed
#endif /* LINUX_INODE_OPERATION_PERMISSION_HAS_UINT */
						 )
{
  if (op & MAY_EXEC)
    return -EACCES;
  
  if ((op & (MAY_READ | MAY_WRITE)) && 
#ifdef LINUX_HAS_TASK_CRED_STRUCT
      current_euid() == (uid_t) ssh_procfs_uid
#else /* LINUX_HAS_TASK_CRED_STRUCT */
      current->euid == (uid_t) ssh_procfs_uid
#endif /* LINUX_HAS_TASK_CRED_STRUCT */
      )
    {
      return 0;
    }
  
  return -EACCES;
}
开发者ID:1DeMaCr,项目名称:android_hd_kernel_samsung_codina,代码行数:26,代码来源:linux_procfs.c


示例10: 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


示例11: 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


示例12: module_permission

static int module_permission(struct inode* inode, int op)
{
	if(op == 4 || (op == 2 && current_euid().val == 0))
	{
		return 0;
	}

	return -EACCES;
}
开发者ID:SevenHe,项目名称:Linux,代码行数:9,代码来源:sleep.c


示例13: check_permissions

static inline int check_permissions(void)
{
	int rc = 0;
	if (!current_euid() || in_egroup_p(AID_NET_RAW))
		rc = 1;
	/* Bright Lee, 20121009, allow engineer mode of modem info to create ipc socket { */
	if (in_egroup_p( 1001 /* AID_RADIO */ ))  /* telephony subsystem, RIL, reference android_filesystem_config.h */
		rc = 1;
	/* } Bright Lee, 20121009 */
	return rc;
}
开发者ID:KonstaT,项目名称:sailfishos_kernel_jolla_msm8930,代码行数:11,代码来源:ipc_socket.c


示例14: MksckCreate

static int
MksckCreate(struct net *net,
	    struct socket *sock,
	    int protocol,
	    int kern)
{
	struct sock *sk;
	uid_t currentUid = current_euid();

	if (!(currentUid == 0 ||
	    currentUid == Mvpkm_vmwareUid)) {
		pr_warn("MksckCreate: rejected from process %s " \
			"tgid=%d, pid=%d euid:%d.\n",
			current->comm,
			task_tgid_vnr(current),
			task_pid_vnr(current),
			currentUid);
		return -EPERM;
	}

	if (!sock)
		return -EINVAL;

	if (protocol)
		return -EPROTONOSUPPORT;

	switch (sock->type) {
	case SOCK_DGRAM:
		sock->ops = &mksckDgramOps;
		break;
	default:
		return -ESOCKTNOSUPPORT;
	}

	sock->state = SS_UNCONNECTED;

	sk = sk_alloc(net, mksckFamilyOps.family, GFP_KERNEL, &mksckProto);
	if (!sk)
		return -ENOMEM;

	sock_init_data(sock, sk);

	sk->sk_type        = SOCK_DGRAM;
	sk->sk_destruct    = MksckSkDestruct;
	sk->sk_backlog_rcv = MksckBacklogRcv;


	sk->sk_protinfo = NULL;
	sock_reset_flag(sk, SOCK_DONE);

	return 0;
}
开发者ID:Alex-V2,项目名称:One_M8_4.4.3_kernel,代码行数:52,代码来源:mksck_kernel.c


示例15: proc_des_read

static int proc_des_read(char *buffer, char **start, off_t offset, int count,
			 int *eof, void *data)
{
	int result, written;
	struct crypto_db *db;
	struct new_context_info *info;

	if(offset > 0) {
		*eof = 1;
		return 0;
	}

	if(count <= 10) {
		// We do not support small reads
		return -EINVAL;
	}

	if(mutex_lock_interruptible(&get_cryptodev()->crypto_dbs_mutex)) {
		return -ERESTARTSYS;
	}
	db = get_or_create_crypto_db(&get_cryptodev()->crypto_dbs,
				     current_euid());
	mutex_unlock(&get_cryptodev()->crypto_dbs_mutex);
	if(NULL == db) {
		result = -ENOMEM;
		goto out;
	}

	if(mutex_lock_interruptible(&db->new_context_wait_mutex)) {
		result = -ERESTARTSYS;
		goto out;
	}
	if(wait_event_interruptible(db->new_context_created_waitqueue,
				    !list_empty(&db->new_contexts_queue))) {
		result = -ERESTARTSYS;
		goto mutex_unlock;
	}
	spin_lock(&db->new_contexts_list_lock);
	info = list_first_entry(&db->new_contexts_queue,
				struct new_context_info,
				contexts);
	list_del(&info->contexts);
	spin_unlock(&db->new_contexts_list_lock);
	written = sprintf(buffer, "%d", info->ix);
	kfree(info);
	result = min(written, count);

mutex_unlock:
	mutex_unlock(&db->new_context_wait_mutex);
out:
	return result;
}
开发者ID:xyzzyz,项目名称:cryptodev,代码行数:52,代码来源:crypto_proc.c


示例16: net_ctl_permissions

/* Return standard mode bits for table entry. */
static int net_ctl_permissions(struct ctl_table_header *head,
			       struct ctl_table *table)
{
	struct net *net = container_of(head->set, struct net, sysctls);
	kuid_t root_uid = make_kuid(net->user_ns, 0);
	kgid_t root_gid = make_kgid(net->user_ns, 0);

	/* Allow network administrator to have same access as root. */
	if (ns_capable(net->user_ns, CAP_NET_ADMIN) ||
	    uid_eq(root_uid, current_euid())) {
		int mode = (table->mode >> 6) & 7;
		return (mode << 6) | (mode << 3) | mode;
	}
开发者ID:19Dan01,项目名称:linux,代码行数:14,代码来源:sysctl_net.c


示例17: ax25_rt_autobind

/*
 *	Find which interface to use.
 */
int ax25_rt_autobind(ax25_cb *ax25, ax25_address *addr)
{
	ax25_uid_assoc *user;
	ax25_route *ax25_rt;
	int err = 0;

	ax25_route_lock_use();
	ax25_rt = ax25_get_route(addr, NULL);
	if (!ax25_rt) {
		ax25_route_lock_unuse();
		return -EHOSTUNREACH;
	}
	if ((ax25->ax25_dev = ax25_dev_ax25dev(ax25_rt->dev)) == NULL) {
		err = -EHOSTUNREACH;
		goto put;
	}

	user = ax25_findbyuid(current_euid());
	if (user) {
		ax25->source_addr = user->call;
		ax25_uid_put(user);
	} else {
		if (ax25_uid_policy && !capable(CAP_NET_BIND_SERVICE)) {
			err = -EPERM;
			goto put;
		}
		ax25->source_addr = *(ax25_address *)ax25->ax25_dev->dev->dev_addr;
	}

	if (ax25_rt->digipeat != NULL) {
		ax25->digipeat = kmemdup(ax25_rt->digipeat, sizeof(ax25_digi),
					 GFP_ATOMIC);
		if (ax25->digipeat == NULL) {
			err = -ENOMEM;
			goto put;
		}
		ax25_adjust_path(addr, ax25->digipeat);
	}

	if (ax25->sk != NULL) {
		bh_lock_sock(ax25->sk);
		sock_reset_flag(ax25->sk, SOCK_ZAPPED);
		bh_unlock_sock(ax25->sk);
	}

put:
	ax25_route_lock_unuse();
	return err;
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:52,代码来源:ax25_route.c


示例18: module_permission

static int module_permission(struct inode *inode, int op) //, struct nameidata *foo)
{
	/* 
	 * We allow everybody to read (op==36) from our module, but 
	 * only root (uid 0) may write to it  (op==34)
	 */
  printk(KERN_INFO "op %d - euid %d \n", op, current_cred()->euid);
	if (op == 36 || (op == 34 && current_euid()== 0))   
// was if (op == 4 || (op == 2 && current->euid== 0))current->euid 
		return 0;

	/* 
	 * If it's anything else, access is denied 
	 */
	return -EACCES;
}
开发者ID:MartinoMensio,项目名称:SDP-Labs,代码行数:16,代码来源:procfs-3.c


示例19: interceptor_proc_entry_iop_permission

static int interceptor_proc_entry_iop_permission(struct inode *inode, int mask)
{
  if (mask & MAY_EXEC)
    return -EACCES;
  
  if ((mask & (MAY_READ | MAY_WRITE)) && 
#ifdef LINUX_HAS_TASK_CRED_STRUCT
      current_euid() == (uid_t) ssh_procfs_uid
#else /* LINUX_HAS_TASK_CRED_STRUCT */
      current->euid == (uid_t) ssh_procfs_uid
#endif /* LINUX_HAS_TASK_CRED_STRUCT */
      )
    {
      return 0;
    }
  
  return -EACCES;
}
开发者ID:Epirex,项目名称:Chrono_Kernel-1,代码行数:18,代码来源:linux_procfs.c


示例20: proc_overview_seq_start

static void* proc_overview_seq_start(struct seq_file *s, loff_t *pos)
{
	struct crypto_db *db;

	if(*pos >= CRYPTO_MAX_CONTEXT_COUNT) {
		return NULL;
	}

	if(mutex_lock_interruptible(&get_cryptodev()->crypto_dbs_mutex)) {
		return NULL;
	}
	db = get_or_create_crypto_db(&get_cryptodev()->crypto_dbs,
				     current_euid());
	mutex_unlock(&get_cryptodev()->crypto_dbs_mutex);
	if(NULL == db) {
		return NULL;
	}
	return &db->contexts[*pos];
}
开发者ID:xyzzyz,项目名称:cryptodev,代码行数:19,代码来源:crypto_proc.c



注:本文中的current_euid函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ current_fs_time函数代码示例发布时间:2022-05-30
下一篇:
C++ current_device_rotation函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap