05363a7f7d
As part of on ongoing effort to perform more automated testing and provide more tools for individual developers to validate their patches before submitting, we are trying to make our code "clang-format clean". My hope is that once we have fixed all of our style "quirks", developers will be able to run clang-format on their patches to help avoid silly formatting problems and ensure their changes fit in well with the rest of the SELinux kernel code. Signed-off-by: Paul Moore <paul@paul-moore.com>
33 lines
865 B
C
33 lines
865 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Implementations of the security context functions.
|
|
*
|
|
* Author: Ondrej Mosnacek <omosnacek@gmail.com>
|
|
* Copyright (C) 2020 Red Hat, Inc.
|
|
*/
|
|
|
|
#include <linux/jhash.h>
|
|
|
|
#include "context.h"
|
|
#include "mls.h"
|
|
|
|
u32 context_compute_hash(const struct context *c)
|
|
{
|
|
u32 hash = 0;
|
|
|
|
/*
|
|
* If a context is invalid, it will always be represented by a
|
|
* context struct with only the len & str set (and vice versa)
|
|
* under a given policy. Since context structs from different
|
|
* policies should never meet, it is safe to hash valid and
|
|
* invalid contexts differently. The context_cmp() function
|
|
* already operates under the same assumption.
|
|
*/
|
|
if (c->len)
|
|
return full_name_hash(NULL, c->str, c->len);
|
|
|
|
hash = jhash_3words(c->user, c->role, c->type, hash);
|
|
hash = mls_range_hash(&c->range, hash);
|
|
return hash;
|
|
}
|