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.

56 lines
1.3 KiB

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
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