You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
/*
|
|
* Copyright (c) 2017 - present Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
extern int __infer_taint_source();
|
|
extern void __infer_taint_sink(int);
|
|
|
|
namespace expressions {
|
|
|
|
void propagate_via_unop1_bad() {
|
|
int source = __infer_taint_source();
|
|
int laundered = ~source;
|
|
__infer_taint_sink(laundered);
|
|
}
|
|
|
|
void propagate_via_unop2_bad() {
|
|
int source = __infer_taint_source();
|
|
__infer_taint_sink(~source);
|
|
}
|
|
|
|
void propagate_via_binop1_bad() {
|
|
int source = __infer_taint_source();
|
|
int laundered = 5 + source % 7;
|
|
__infer_taint_sink(laundered);
|
|
}
|
|
|
|
void propagate_via_binop2_bad() {
|
|
int source1 = __infer_taint_source();
|
|
int source2 = __infer_taint_source();
|
|
int laundered = 1 + source1 / 2 + source2 * 7;
|
|
// should report twice
|
|
__infer_taint_sink(laundered);
|
|
}
|
|
|
|
void propagate_via_binop3_bad() {
|
|
int source = __infer_taint_source();
|
|
__infer_taint_sink(source - 3);
|
|
}
|
|
|
|
void call_sink_nested(int formal) { __infer_taint_sink(formal); }
|
|
|
|
void propagate_via_binop_nested1_bad() {
|
|
int source = ~(__infer_taint_source());
|
|
call_sink_nested(source);
|
|
}
|
|
|
|
void propagate_via_binop_nested2_bad() {
|
|
int source = __infer_taint_source();
|
|
call_sink_nested(~source);
|
|
}
|
|
|
|
} // namespace expressions
|