Browse Source
Signed-off-by: Laurent Vivier <lvivier@redhat.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>pull/42/head
committed by
Michael Tokarev
4 changed files with 46 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||
// Find muldiv64(i64, i64, x) for potential overflow |
|||
@filter@ |
|||
typedef uint64_t; |
|||
typedef int64_t; |
|||
{ uint64_t, int64_t, long, unsigned long } a, b; |
|||
expression c; |
|||
position p; |
|||
@@ |
|||
|
|||
muldiv64(a,b,c)@p |
|||
|
|||
@script:python@ |
|||
p << filter.p; |
|||
@@ |
|||
|
|||
cocci.print_main("potential muldiv64() overflow", p) |
|||
@ -0,0 +1,6 @@ |
|||
// replace muldiv64(a, 1, b) by "a / b" |
|||
@@ |
|||
expression a, b; |
|||
@@ |
|||
-muldiv64(a, 1, b) |
|||
+a / b |
|||
@ -0,0 +1,11 @@ |
|||
// replace muldiv64(i32, i32, x) by (uint64_t)i32 * i32 / x |
|||
@@ |
|||
typedef uint32_t; |
|||
typedef int32_t; |
|||
{ uint32_t, int32_t, int, unsigned int } a, b; |
|||
typedef uint64_t; |
|||
expression c; |
|||
@@ |
|||
|
|||
-muldiv64(a,b,c) |
|||
+(uint64_t) a * b / c |
|||
@ -0,0 +1,13 @@ |
|||
// replace muldiv64(i32, i64, x) by muldiv64(i64, i32, x) |
|||
@@ |
|||
typedef uint64_t; |
|||
typedef int64_t; |
|||
typedef uint32_t; |
|||
typedef int32_t; |
|||
{ uint32_t, int32_t, int, unsigned int } a; |
|||
{ uint64_t, int64_t, long, unsigned long } b; |
|||
expression c; |
|||
@@ |
|||
|
|||
-muldiv64(a,b,c) |
|||
+muldiv64(b,a,c) |
|||
Loading…
Reference in new issue