libsepol: avoid unsigned integer overflow
Unsigned integer overflow is well-defined and not undefined behavior. But it is still useful to enable undefined behavior sanitizer checks on unsigned arithmetic to detect possible issues on counters or variables with similar purpose. Use a spaceship operator like comparison instead of subtraction. Modern compilers will generate a single comparison instruction instead of actually perform the subtraction. policydb.c:826:17: runtime error: unsigned integer overflow: 24 - 1699 cannot be represented in type 'unsigned int' Signed-off-by: Christian Göttsche <cgzones@googlemail.com> Acked-by: James Carter <jwcart2@gmail.com>
This commit is contained in:
parent
42f3d7cceb
commit
1537ea8412
1 changed files with 2 additions and 2 deletions
|
@ -817,11 +817,11 @@ static int filenametr_cmp(hashtab_t h __attribute__ ((unused)),
|
|||
const filename_trans_key_t *ft2 = (const filename_trans_key_t *)k2;
|
||||
int v;
|
||||
|
||||
v = ft1->ttype - ft2->ttype;
|
||||
v = (ft1->ttype > ft2->ttype) - (ft1->ttype < ft2->ttype);
|
||||
if (v)
|
||||
return v;
|
||||
|
||||
v = ft1->tclass - ft2->tclass;
|
||||
v = (ft1->tclass > ft2->tclass) - (ft1->tclass < ft2->tclass);
|
||||
if (v)
|
||||
return v;
|
||||
|
||||
|
|
Loading…
Reference in a new issue