Re: [PATCH] LSM: Add a Smack subdirectory in /proc/.../attr

From: Alexey Dobriyan
Date: Wed Jan 18 2017 - 16:52:39 EST


On Wed, Jan 18, 2017 at 11:07:19AM -0800, Casey Schaufler wrote:

> -int security_getprocattr(struct task_struct *p, char *name, char **value)
> +int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
> + char **value)
> {
> - return call_int_hook(getprocattr, -EINVAL, p, name, value);
> + struct security_hook_list *hp;
> + int rc = -EINVAL;

This is dead write.

> + list_for_each_entry(hp, &security_hook_heads.getprocattr, list) {
> + if (lsm != NULL && strcmp(lsm, hp->lsm))
> + continue;
> + rc = hp->hook.getprocattr(p, name, value);
> + if (rc != -ENOENT)
> + return rc;
> + }
> + return -EINVAL; <-------+
|
> -int security_setprocattr(struct task_|struct *p, char *name, void *value, size_t size)
> +int security_setprocattr(struct task_|struct *p, const char *lsm, char *name,
> + void *va|lue, size_t size)
> { |
> - return call_int_hook(setprocattr|, -EINVAL, p, name, value, size);
> + struct security_hook_list *hp; |
> + int rc = -EINVAL; |
|
This one is not. |
|
> + |
> + list_for_each_entry(hp, &securit|y_hook_heads.setprocattr, list) {
> + if (lsm != NULL && strcm|p(lsm, hp->lsm))
> + continue; |
> + rc = hp->hook.setprocatt|r(p, name, value, size);
> + if (rc != -ENOENT) |
> + break; |
> + } |
> + return rc; <-------+