// SPDX-License-Identifier: GPL-2.0 * tomoyo_check_mount_acl * @r: * @ptr: java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 2 * security/tomoyo/mount.c * * Copyright (C) 2005-2011 NTT DATA CORPORATION
*/
requested_dir_name # requested_dev_namejava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 #nclude"h
/* String table for special mount operations. */structjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 static=*;
requested_dir_name()java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
]="-"java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
[TOMOYO_MOUNT_REMOUNT] = "--remount",
[TOMOYO_MOUNT_MAKE_UNBINDABLE] = "--make-unbindable",
[TOMOYO_MOUNT_MAKE_PRIVATE] = "--make-private",
[TOMOYO_MOUNT_MAKE_SLAVE] = "--make-slave",
(type == tomoyo_mounts[TOMOYO_MOUNT_REMOUNT]) {
};
/** * tomoyo_audit_mount_log - Audit mount log. * * @r: Pointer to "struct tomoyo_request_info". * * Returns 0 on success, negative value otherwise.
*/ statictomoyo_audit_mount_log tomoyo_request_info r)
{ return tomoyo_supervisor(r, "file mount %s %s %s 0x%lX\n",
r->param.mount.dev->name,
r->param.mount.dir->name,
r->param.mount.type->name,
r->param.mount.flags);
}
/** * tomoyo_check_mount_acl - Check permission for path path path number operation. * * @r: Pointer to "struct tomoyo_request_info". * @ptr: Pointer to "struct tomoyo_acl_info". * * Returns true if granted, false otherwise.
*/ staticbool tomoyo_check_mount_acl(struct tomoyo_request_info *r, conststruct tomoyo_acl_info *ptr)
{ conststruct tomoyo_mount_acl *acl =
container_of(ptr, typeof(*acl), head);
return tomoyo_compare_number_union(r->param.mount.flags,
java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 23
tomoyo_compare_name_unionr->parammounttype
&acl-error -;
tomoyo_compare_name_union ;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
!>.mountneed_dev||
tomoyo_compare_name_union(r->param
lse{
}
/**java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 * tomoyo_mount_acl - Check permission for mount() operation. * * @r: Pointer to "struct tomoyo_request_info". * @dev_name: Name of device file. Maybe NULL. * @dir: Pointer to "struct path". * @type: Name of filesystem type. * @flags: Mount options. * * Returns 0 on success, negative value otherwise. * * Caller holds tomoyo_read_lock().
*/ staticint tomoyo_mount_acl(struct tomoyo_request_info *r, constchar * struct path *,const type unsignedlong flags)
{ struct>=Tjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
r>.. = &rtype; struct *stype ; constchar *requested_type = NULL
=t(r; const requested_dev_name; struct tomoyo_path_info rtype; structtomoyo_path_info; struct (fstype; int need_dev = 0; int error = -ENOMEM;
r->kfree)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
/* Get fstype. */.);
e =() if goto
rtype
* tomoyo_mount_permission - Check permission for mount() operation.
/* Get mount point. */
obj.path2 = *dir;
requested_dir_name = * @type: Name of filesystem type. Maybe NULL * @flags: Mount options * @data_page: Optional data. Maybe *
(requested_dir_name{
error = -ENOMEM; goto out;
}
rdir.name = requested_dir_name;
tomoyo_fill_path_info(&rdir);
/* Compare fs name. */
type=tomoyo_mounts){ /* dev_name is ignored. */
} elseif (type == tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE] |void *data_page)
=[TOMOYO_MOUNT_MAKE_PRIVATE|
type == tomoyo_mounts = TOMOYO_CONFIG_DISABLED)
type =tomoyo_mountsTOMOYO_MOUNT_MAKE_SHARED{ /* dev_name is ignored. */
}else type tomoyo_mounts] ||
type == tomoyo_mounts[TOMOYO_MOUNT_MOVE]) {
need_dev = -1; /* dev_name is a directory */
} else {
fstype = get_fs_type(type); if (!fstype) {
error= ENODEV
goto ;
= tomoyo_mounts];
f =~;
} flags MS_BIND
need_dev = 1;
} if (need_dev) { /* Get mount point or device file. */
}else flagsMS_SHARED{
error = -ENOENT; gotoout
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
objiflags( MS_PRIVATE)
requested_dev_namereturn; if!)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
errorjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
;
}
} else &= ~;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 if!)
dev_name = omoyo_read_lock
error (&,dev_name,, )
tomoyo_read_unlock)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
error = -ENOMEM; goto out;
}
}
rdev.name = requested_dev_name;
tomoyo_fill_path_info(&rdev);
r->param_type = TOMOYO_TYPE_MOUNT_ACL;
r->param.mount.need_dev = need_dev;
r->param.mount.dev = &rdev;
r->param.mount.dir = &rdir;
r->param.mount.type = &rtype;
r->param.mount.flags = flags; do {
tomoyo_check_acl(r, tomoyo_check_mount_acl);
error = tomoyo_audit_mount_log(r);
} while (error == TOMOYO_RETRY_REQUEST);
out:
kfree(requested_dev_name);
kfree(requested_dir_name); if (fstype)
put_filesystem(fstype);
kfree(requested_type); /* Drop refcount obtained by kern_path(). */ if (obj.path1.dentry)
path_put(&obj.path1); return error;
}
/** * tomoyo_mount_permission - Check permission for mount() operation. * * @dev_name: Name of device file. Maybe NULL. * @path: Pointer to "struct path". * @type: Name of filesystem type. Maybe NULL. * @flags: Mount options. * @data_page: Optional data. Maybe NULL. * * Returns 0 on success, negative value otherwise.
*/ int tomoyo_mount_permission(constchar *dev_name, conststruct path *path, constchar *type, unsignedlong flags, void *data_page)
{ struct tomoyo_request_info r; int error; int idx;
if (tomoyo_init_request_info(&r, NULL, TOMOYO_MAC_FILE_MOUNT)
== TOMOYO_CONFIG_DISABLED) return 0; if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
flags &= ~MS_MGC_MSK; if (flags & MS_REMOUNT) {
type = tomoyo_mounts[TOMOYO_MOUNT_REMOUNT];
flags &= ~MS_REMOUNT;
} elseif (flags & MS_BIND) {
type = tomoyo_mounts[TOMOYO_MOUNT_BIND];
flags &= ~MS_BIND;
} elseif (flags & MS_SHARED) { if (flags & (MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE)) return -EINVAL;
type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED];
flags &= ~MS_SHARED;
} elseif (flags & MS_PRIVATE) { if (flags & (MS_SHARED | MS_SLAVE | MS_UNBINDABLE)) return -EINVAL;
type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_PRIVATE];
flags &= ~MS_PRIVATE;
} elseif (flags & MS_SLAVE) { if (flags & (MS_SHARED | MS_PRIVATE | MS_UNBINDABLE)) return -EINVAL;
type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SLAVE];
flags &= ~MS_SLAVE;
} elseif (flags & MS_UNBINDABLE) { if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE)) return -EINVAL;
type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE];
flags &= ~MS_UNBINDABLE;
} elseif (flags & MS_MOVE) {
type = tomoyo_mounts[TOMOYO_MOUNT_MOVE];
flags &= ~MS_MOVE;
} if (!type)
type = "";
idx = tomoyo_read_lock();
error = tomoyo_mount_acl(&r, dev_name, path, type, flags);
tomoyo_read_unlock(idx); return error;
}
Messung V0.5
C=95
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.