Skip to content

Commit

Permalink
selinux: provide __le variables explicitly
Browse files Browse the repository at this point in the history
While the endiannes is being handled properly sparse was unable to verify
this due to type inconsistency. So introduce an additional __le32
respectively _le64 variable to be passed to le32/64_to_cpu() to allow
sparse to verify proper typing. Note that this patch does not change
the generated binary on little-endian systems - on 32bit powerpc it
does change the binary.

Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Signed-off-by: Paul Moore <paul@paul-moore.com>
  • Loading branch information
Nicholas Mc Guire authored and Paul Moore committed May 21, 2019
1 parent a188339 commit 8ba1d53
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions security/selinux/ss/ebitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,9 @@ int ebitmap_read(struct ebitmap *e, void *fp)
{
struct ebitmap_node *n = NULL;
u32 mapunit, count, startbit, index;
__le32 ebitmap_start;
u64 map;
__le64 mapbits;
__le32 buf[3];
int rc, i;

Expand Down Expand Up @@ -381,12 +383,12 @@ int ebitmap_read(struct ebitmap *e, void *fp)
goto bad;

for (i = 0; i < count; i++) {
rc = next_entry(&startbit, fp, sizeof(u32));
rc = next_entry(&ebitmap_start, fp, sizeof(u32));
if (rc < 0) {
pr_err("SELinux: ebitmap: truncated map\n");
goto bad;
}
startbit = le32_to_cpu(startbit);
startbit = le32_to_cpu(ebitmap_start);

if (startbit & (mapunit - 1)) {
pr_err("SELinux: ebitmap start bit (%d) is "
Expand Down Expand Up @@ -423,12 +425,12 @@ int ebitmap_read(struct ebitmap *e, void *fp)
goto bad;
}

rc = next_entry(&map, fp, sizeof(u64));
rc = next_entry(&mapbits, fp, sizeof(u64));
if (rc < 0) {
pr_err("SELinux: ebitmap: truncated map\n");
goto bad;
}
map = le64_to_cpu(map);
map = le64_to_cpu(mapbits);

index = (startbit - n->startbit) / EBITMAP_UNIT_SIZE;
while (map) {
Expand Down

0 comments on commit 8ba1d53

Please sign in to comment.