Re: [PATCH v2 5/5] LSM: LoadPin for kernel file loading restrictions

From: Mimi Zohar
Date: Thu Mar 31 2016 - 17:24:29 EST


On Mon, 2016-03-28 at 14:14 -0700, Kees Cook wrote:

> +static const char *id_str[READING_MAX_ID] = {
> + [READING_FIRMWARE] = "firmware",
> + [READING_MODULE] = "kernel module",
> + [READING_KEXEC_IMAGE] = "kexec image",
> + [READING_KEXEC_INITRAMFS] = "kexec initramfs",
> + [READING_POLICY] = "security policy",
> +};
> +
> +static int loadpin_read_file(struct file *file, enum kernel_read_file_id id)
> +{
> + struct super_block *load_root;
> + const char *origin;
> +
> + if (id < 0 || id >= READING_MAX_ID)
> + return -EINVAL;
> +

The kernel_read_file_id enumeration starts at 1.

> + origin = id_str[id];
> + if (!origin) {
> + origin = "unknown";

Right, all the entries in the kernel_read_file_id enumeration are
currently listed in id_str. Checking origin is needed for when id_str[]
isn't kept in sync with the enumeration.

Looks good!

Mimi