|
18 | 18 | #define WARNING_GADGET(name) GADGET(name)
|
19 | 19 | #endif
|
20 | 20 |
|
21 |
| -/// A `WARNING_GADGET` subset, each of which may be enable/disable separately |
22 |
| -/// with different flags |
23 |
| -#ifndef WARNING_OPTIONAL_GADGET |
24 |
| -#define WARNING_OPTIONAL_GADGET(name) WARNING_GADGET(name) |
| 21 | +/// A `WARNING_GADGET` subset, accepts context as additional parameter. |
| 22 | +#ifndef WARNING_OPTIONAL_GADGET_CTX |
| 23 | +#define WARNING_OPTIONAL_GADGET_CTX(name) WARNING_GADGET(name) |
| 24 | +#endif |
| 25 | + |
| 26 | +/// A `WARNING_GADGET` subset, accepts handler as additional parameter. |
| 27 | +#ifndef WARNING_OPTIONAL_GADGET_HANDLER |
| 28 | +#define WARNING_OPTIONAL_GADGET_HANDLER(name) WARNING_GADGET(name) |
25 | 29 | #endif
|
26 | 30 |
|
27 | 31 | /// Safe gadgets correspond to code patterns that aren't unsafe but need to be
|
|
31 | 35 | #define FIXABLE_GADGET(name) GADGET(name)
|
32 | 36 | #endif
|
33 | 37 |
|
| 38 | +/// A subset of the safe gadgets that may return multiple results. |
| 39 | +#ifndef FIXABLE_GADGET_MULTY_RES |
| 40 | +#define FIXABLE_GADGET_MULTY_RES(name) GADGET(name) |
| 41 | +#endif |
| 42 | + |
34 | 43 | WARNING_GADGET(Increment)
|
35 | 44 | WARNING_GADGET(Decrement)
|
36 |
| -WARNING_GADGET(ArraySubscript) |
37 | 45 | WARNING_GADGET(PointerArithmetic)
|
38 | 46 | WARNING_GADGET(UnsafeBufferUsageAttr)
|
39 |
| -WARNING_GADGET(UnsafeBufferUsageCtorAttr) |
40 | 47 | WARNING_GADGET(DataInvocation)
|
41 |
| -WARNING_OPTIONAL_GADGET(UnsafeLibcFunctionCall) |
42 |
| -WARNING_OPTIONAL_GADGET(SpanTwoParamConstructor) // Uses of `std::span(arg0, arg1)` |
| 48 | +WARNING_OPTIONAL_GADGET_CTX(ArraySubscript) |
| 49 | +WARNING_OPTIONAL_GADGET_CTX(UnsafeBufferUsageCtorAttr) |
| 50 | +WARNING_OPTIONAL_GADGET_HANDLER(UnsafeLibcFunctionCall) |
| 51 | +WARNING_OPTIONAL_GADGET_HANDLER(SpanTwoParamConstructor) // Uses of `std::span(arg0, arg1)` |
43 | 52 | FIXABLE_GADGET(ULCArraySubscript) // `DRE[any]` in an Unspecified Lvalue Context
|
44 | 53 | FIXABLE_GADGET(DerefSimplePtrArithFixable)
|
45 | 54 | FIXABLE_GADGET(PointerDereference)
|
46 |
| -FIXABLE_GADGET(UPCAddressofArraySubscript) // '&DRE[any]' in an Unspecified Pointer Context |
47 |
| -FIXABLE_GADGET(UPCStandalonePointer) |
48 |
| -FIXABLE_GADGET(UPCPreIncrement) // '++Ptr' in an Unspecified Pointer Context |
49 |
| -FIXABLE_GADGET(UUCAddAssign) // 'Ptr += n' in an Unspecified Untyped Context |
50 |
| -FIXABLE_GADGET(PtrToPtrAssignment) |
51 |
| -FIXABLE_GADGET(CArrayToPtrAssignment) |
| 55 | +FIXABLE_GADGET_MULTY_RES(UPCAddressofArraySubscript) // '&DRE[any]' in an Unspecified Pointer Context |
| 56 | +FIXABLE_GADGET_MULTY_RES(UPCStandalonePointer) |
| 57 | +FIXABLE_GADGET_MULTY_RES(UPCPreIncrement) // '++Ptr' in an Unspecified Pointer Context |
| 58 | +FIXABLE_GADGET_MULTY_RES(UUCAddAssign) // 'Ptr += n' in an Unspecified Untyped Context |
| 59 | +FIXABLE_GADGET_MULTY_RES(PtrToPtrAssignment) |
| 60 | +FIXABLE_GADGET_MULTY_RES(CArrayToPtrAssignment) |
52 | 61 | FIXABLE_GADGET(PointerInit)
|
53 | 62 |
|
| 63 | +#undef FIXABLE_GADGET_MULTY_RES |
54 | 64 | #undef FIXABLE_GADGET
|
55 | 65 | #undef WARNING_GADGET
|
56 |
| -#undef WARNING_OPTIONAL_GADGET |
| 66 | +#undef WARNING_OPTIONAL_GADGET_CTX |
| 67 | +#undef WARNING_OPTIONAL_GADGET_HANDLER |
57 | 68 | #undef GADGET
|
0 commit comments