{"id":46062281,"url":"https://github.com/vusec/uncontained","last_synced_at":"2026-03-01T11:35:50.031Z","repository":{"id":176918830,"uuid":"656700884","full_name":"vusec/uncontained","owner":"vusec","description":"Uncovering Container Confusion in the Linux Kernel","archived":false,"fork":false,"pushed_at":"2024-02-27T16:57:23.000Z","size":374,"stargazers_count":40,"open_issues_count":1,"forks_count":7,"subscribers_count":20,"default_branch":"main","last_synced_at":"2024-02-27T17:58:39.562Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://vusec.net/projects/uncontained","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vusec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-06-21T13:08:52.000Z","updated_at":"2024-02-15T21:01:30.000Z","dependencies_parsed_at":"2023-09-22T23:42:46.341Z","dependency_job_id":"f7dde42a-eb7d-4e50-bccc-823183da9d50","html_url":"https://github.com/vusec/uncontained","commit_stats":null,"previous_names":["vusec/uncontained"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vusec/uncontained","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vusec%2Funcontained","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vusec%2Funcontained/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vusec%2Funcontained/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vusec%2Funcontained/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vusec","download_url":"https://codeload.github.com/vusec/uncontained/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vusec%2Funcontained/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29968575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T10:55:55.490Z","status":"ssl_error","status_checked_at":"2026-03-01T10:55:55.175Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-01T11:35:49.369Z","updated_at":"2026-03-01T11:35:50.017Z","avatar_url":"https://github.com/vusec.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uncontained\n\nWe present uncontained, a framework to detect type confusion bugs originating from incorrect downcasting operations in non-object-oriented languages, which we call container confusion. In languages like C, object-oriented programming features are often mimicked by embedding structures as fields of other structures and downcast operations performed using the unsafe container_of() macro. uncontained leverages static and dynamic analysis to detect container confusion bugs in large codebases, such as the Linux kernel.\n\nWe introduce a novel sanitizer able to detect container confusion at runtime during fuzzing.\nBased on the bugs we found, we generalize bug patterns and propose a novel static analysis framework to detect variants of those bugs across the entire codebase. Analyzing the Linux kernel, we found 89 container confusion bugs, responsibly disclosed them, and submitted 149 patches to fix all of them.\n\n## Paper\n\nYou can find the full paper [here](https://download.vusec.net/papers/uncontained_sec23.pdf).\n\n## Directory Structure\n\n* evaluation: Contains the necessary LMBench configuration and will include the results of the evaluation scripts.\n* passes/ContainerOfSanitizer: The LLVM pass inserting the necessary `container_of()` sanitizer checks.\n* passes/Dump{ContainerOf,Types}: Utility passes to aggregate the type graph.\n* passes/SimpleDataflowChecker: The LLVM pass to perform the static analysis using data flow.\n* patches: Contains the necessary LMBench passes \u0026 a syzkaller patch to ignore non-uncontained reports.\n* runtime: Contains the runtime component of the sanitizer with the functions called by the LLVM pass.\n* scripts: Contains scripts to ease compilation / running syzkaller \u0026 scripts to reproduce the experiments.\n* tests: Contains basic tests for the sanitizer \u0026 static analysis components\n* vscode-extension: Contains the vscode extension allowing easier inspection of static analysis results\n\nSubmodules:\n* kernel-tools: Framework to compile LLVM, syzkaller, Linux \u0026 run LLVM passes on the kernel.\n* linux: Custom uncontained-linux repository including our own patches.\n* llvm-project: Custom uncontained-llvm-project repository including our own patches.\n\n## Artifact Evaluation\n\nIn this artifact we provide the means to reproduce our main results.\nSpecifically, we show that our framework, uncontained, finds container confusion,\nboth dynamically while fuzzing and statically with dataflow tracking.\nWe have evaluated our artifact on an Ubuntu 22.04.1 (stock Linux kernel v.5.15)\nwith 16 cores @2.3GHz (AMD EPYC 7643) using a total of 16 QEMU-KVM virtual machines\nwith 4GB RAM.\n\n### Description \u0026 Requirements\n\n#### Hardware Dependencies\n\n`uncontained` does not impose any strict hardware requirements but we assume a\nrecent x86_64 machine with enough RAM (minimum 64GB, or enough swap) to compile LLVM/Linux and\nrun virtual QEMU machines for fuzzing with syzkaller.\n\n#### Software Dependencies\n\nWe expect certain packages from the Ubuntu package manager to be installed,\nwhich are required to compile LLVM, Linux, syzkaller, etc.\nWe describe the necessary packages in the Set-up section.\n\nIf you use a different distribution you need to make sure to fulfil the\nnecessary dependencies using your dedicated package manager.\n\n### Setup\n\nIn general, we recommend using a bare-metal desktop system\nrunning Ubuntu 22.04. Make sure that you have KVM support\nand your user is allowed to use KVM. The following packages\nare required:\n\n```\n# go-task\nsh -c \"‘curl -ssL https://taskfile.dev/install.sh‘\" \\\n-- -d -b ~/.local/bin\n# llvm-project\nsudo apt install build-essential clang-12 lld-12 ninja-build ccache cmake\n# linux\nsudo apt install bison flex libelf-dev libssl-dev coccinelle\n# syzkaller\nsudo apt install debootstrap\n# install golang 1.20.5\nGO_VERSION=go1.20.5.linux-amd64\nwget https://go.dev/dl/$GO_VERSION.tar.gz\nsudo rm -rf /usr/local/go\nsudo tar -C /usr/local -xzf $GO_VERSION.tar.gz\nrm -f $GO_VERSION.tar.gz\n# qemu\nsudo apt install qemu-system-x86\n# evaluation\npip3 install scipy pandas\n```\n\nThen make sure that `~/.local/bin` and `/usr/local/go/bin` are\nin your `PATH` to find the `go` and the `task` binaries:\n```\nexport PATH=$HOME/.local/bin:/usr/local/go/bin:$PATH\n```\n\n### Installation\n\n1. Obtain the artifact source and necessary dependencies:\n```\ngit clone --recurse-submodules https://github.com/vusec/uncontained.git\n```\n\n2. Create the `kernel-tools/.env` file with the following content (replace\n`/path/to/uncontained` with the actual absolute path):\n```\nREPOS=/path/to/uncontained\nLLVMPREFIX=/path/to/uncontained/llvm-project/build\nKERNEL=/path/to/uncontained/linux\nENABLE_KASAN=1\nENABLE_DEBUG=1\nENABLE_SYZKALLER=1\nENABLE_GDB_BUILD=1\nADDITIONAL_LLVM_VARIABLES=-DLLVM_ENABLE_EH=ON -DLLVM_ENABLE_RTTI=ON\n```\n\n3. Compile all the necessary dependencies (this will take a while to compile\n   llvm-project and Linux with fullLTO):\n```\nscripts/compile.sh\n```\n\n### Basic Tests\n\nTo test if the sanitizer and the static analyzers work as intended\nyou can use the tests by running the following:\n```\n# test sanitizer\nLLVM_DIR=$PWD/llvm-project/build tests/test.sh\n# test static analyzer\nLLVM_DIR=$PWD/llvm-project/build tests/testDF.sh\n```\n\nYou can check the expected output in [here](#expected-results-for-tests).\n\n### Evaluation workflow\n\nC1. The `uncontained` sanitizer finds new types of container confusions.\nThis is proven by the experiment (E1).\n\nC2. The `uncontained` sanitizer comes with an acceptable performance runtime\noverhead.\nThis is proven by the experiments (E2) and (E3).\n\nC3. The `uncontained` static analyzer has been used to\nuncover new bugs in the Linux kernel. This is proven by\nthe experiments (E4).\n\n### Experiments\n\n#### Experiment E1: Fuzzing Evaluation [2 human-hours + 24 compute-hours]\n\n* How to: `kernel-tools` is responsible for starting the\n   fuzzer with the kernel that has been instrumented with\n   the sanitizer.\n* Preparation: Make sure you setup everything from the\n   Installation step, including building syzkaller and create\n   the syzkaller image (should be done by the `compile.sh` script).\n* Execution: You can compile the kernel with instrumentation and start the\n  fuzzer with executing `./scripts/compile.sh \u0026\u0026 ./scripts/run.sh`.\n  Then let it run for at least 24 hours to get some results.\n* Results: The result will be the crashes in the\n   `kernel-tools/out/syzkaller-workdir/crashes` directory.\n   We need to manually filter out bugs that are not triggered by `uncontained`\n   (all that do not have three lines of `[UNCONTAINED]` before the `BUG:` line).\n\n#### Experiment E2: Fuzzing Performance Evaluation [2 human-hours + 30 compute-hours]\n\nThis is the fuzzing performance experiment using the sanitizer while fuzzing\nwith syzkaller.\nExpected results are the overhead in terms of throughput of executed testcases.\n\n* How to: We need to run syzkaller 10 times for one hour for all three instances\n  (baseline (stock syzkaller), KASAN and `uncontained`)\n* Preparation: Make sure you setup everything from the\n   Installation step, including building syzkaller and create\n   the syzkaller image (should be done by the `compile.sh` script).\n* Execution: You can compile the kernel with instrumentation and start the\n  fuzzer with executing `./scripts/run-fuzzing-performance-evaluation.sh`.\n  Then let it run for the 30 hours to get the results.\n* Results: The result will be the percentage of decreased executed testcases\n  when running syzkaller.\n  You can now look at the results with executing\n  `./scripts/evaluation/syzkaller-bench.py --prefix 'evaluation/syzkaller/results/syzkaller-bench-'`.\n\n#### Experiment E3: LMBench Performance Evaluation [2 human-hours + 60 compute-hours]\n\nThis is the LMBench experiment using the sanitizer while running the\nbenchmarking suite to verify performance overhead.\n\n* How to: We need to run LMBench 10 times for the different instances (baseline,\n  KASAN, `uncontained`).\n* Preparation: Make sure you setup everything from the\n   Installation step, including building syzkaller and create\n   the syzkaller image (should be done by the `compile.sh` script).\n* Execution: You can compile the kernel with instrumentation and start\n  LMBench with executing `./scripts/run-lmbench-performance-evaluation.sh`.\n  Then let it run to get the results.\n* Results: The result will be the overhead numbers of the different\n  configurations on top of the baseline for the LMBench testcases.\n  You can now look at the results with executing\n  `./scripts/evaluation/lmbench.py --prefix 'evaluation/lmbench/results/'`.\n\n#### Experiment E4: Static Analyzer Evaluation [1 human-hour + 3 compute-hours]\n\nThis is the static analyzers experiment using the static analyzer to find the\nnecessary reports with static analysis.\n\n* How to: Compile the kernel with our static analyzers enabled to extract all\n  the bug reports.\n* Preparation: Make sure you setup everything from the Installation step.\n  Also make sure you comment out `ENABLE_KASAN` and `ENABLE_SYZKALLER` in your\n  `.env` file.\n* Execution: You can generate all the reports with\n  `./scripts/run-static-analyzer.sh`.\n  Then let it run to get the results.\n* Results: : The result will be the reports for the different rules.\n  The results from the LLVM passes are in YAML and are not yet grouped by the\n  source line (to remove duplicates).\n  The results from the coccinelle script are text based and are already filtered\n  based on uniqueness.\n  You can load the YAML reports into the `vscode-extension` to look at them\n  in a more convenient way and do the grouping based on the source code line.\n\n##### Rule to Pattern Matching\n\n| Rule                   |  Pattern                                |\n|------------------------|-----------------------------------------|\n|    backwards_contained | 1. Statically Incompatible Containers   |\n|      list_entry_strict | 2. Empty-list Confusion                 |\n| list_entry_correlation | 3. Mismatch on Data Structure Operators |\n|         use_after_iter | 4. Containers with Contracts            |\n|                   kobj | 5. Containers with Contracts            |\n\n## Reproduce on another kernel version\n\nMost on the content in this repository is independet of the kernel version, however many\nof the patches done in [uncontained-linux](https://github.com/vusec/uncontained-linux) need to be repeated.\n\nPrimarily this means: reapplying the coccinelle scripts (and manually fixing some of the issues that\narise from it), disable the KASAN checks, allow compiling KASAN with LTO and add nosanitize \u0026\nuncontained_struct_nesting_info to certain structs.\n\n## Expected Results for tests\n\u003cdetails\u003e\n  \u003csummary\u003etest.sh\u003c/summary\u003e\n\n  ```\nrm: cannot remove 'container_of_log.txt': No such file or directory\nrm: cannot remove 'types_log.txt': No such file or directory\n---------- [TYPE STAT] ----------\n0: 8\n1: 4\n2: 3\n---------------------------------\n[DEBUG] nosanitize src types: 0\n[DEBUG] nosanitize dst types: 2\n---------- [UNCONTAINED STAT] ----------\ntests/: 24\n          --------------------\n[+] instrumented: 24\n    checks inserted: 36\n    avg inserted:    1.666667e+00\n[+] skipped: 0\n    skipped nounc: 0\n    skipped nosan: 0\n----------------------------------------\n   ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003etestDF.sh\u003c/summary\u003e\n\n  ```\n---\u003e /path/to/uncontained/tests/testDF/test_hit10.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n  %4 = call fastcc i32* @__test_source(i8* %3), !dbg !37\n- sinks:\n  call fastcc void @__test_sink(i8* %5), !dbg !39\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: test_rule\nsource:   %4 = call fastcc i32* @__test_source(i8* %3), !dbg !37\n  at: main() in tests/testDF/test_hit10.c:35\nsink:   call fastcc void @__test_sink(i8* %5), !dbg !39\n  at: main() in tests/testDF/test_hit10.c:36\nflow:\n[#2] __test_source() in tests/testDF/test_hit10.c:9\n[#1] main() in tests/testDF/test_hit10.c:35  %4 = call fastcc i32* @__test_source(i8* %3), !dbg !37\n[#0] main() in tests/testDF/test_hit10.c:36  call fastcc void @__test_sink(i8* %5), !dbg !39\n\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit1.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %3 = call i32* @__inet_lookup_established(), !dbg !32\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %3 = call i32* @__inet_lookup_established(), !dbg !32\n  at: main() in tests/testDF/test_hit1.c:31\nsink:   store volatile i32* %5, i32** @out, align 8, !dbg !35, !tbaa !36\n  at: main() in tests/testDF/test_hit1.c:32\nflow:\n[#18] __inet_lookup_established() in tests/testDF/test_hit1.c:9\n[#17] main() in tests/testDF/test_hit1.c:31  %3 = call i32* @__inet_lookup_established(), !dbg !32\n[#16] main() in tests/testDF/test_hit1.c:32  %5 = call i32* @func1(i8* %4), !dbg !34\n[#15] func1() in tests/testDF/test_hit1.c:26i8* %0\n[#14] func1() in tests/testDF/test_hit1.c:27  %2 = call i32* @func2(i8* %0), !dbg !28\n[#13] func2() in tests/testDF/test_hit1.c:22i8* %0\n[#12] func2() in tests/testDF/test_hit1.c:23  %2 = call i32* @func3(i8* %0), !dbg !28\n[#11] func3() in tests/testDF/test_hit1.c:18i8* %0\n[#10] func3() in tests/testDF/test_hit1.c:19  %2 = call i32* @func4(i8* %0), !dbg !28\n[#9] func4() in tests/testDF/test_hit1.c:14i8* %0\n[#8] func4() in tests/testDF/test_hit1.c:15  ret i32* %2, !dbg !29\n[#7] func3() in tests/testDF/test_hit1.c:19  %2 = call i32* @func4(i8* %0), !dbg !28\n[#6] func3() in tests/testDF/test_hit1.c:19  ret i32* %2, !dbg !29\n[#5] func2() in tests/testDF/test_hit1.c:23  %2 = call i32* @func3(i8* %0), !dbg !28\n[#4] func2() in tests/testDF/test_hit1.c:23  ret i32* %2, !dbg !29\n[#3] func1() in tests/testDF/test_hit1.c:27  %2 = call i32* @func2(i8* %0), !dbg !28\n[#2] func1() in tests/testDF/test_hit1.c:27  ret i32* %2, !dbg !29\n[#1] main() in tests/testDF/test_hit1.c:32  %5 = call i32* @func1(i8* %4), !dbg !34\n[#0] main() in tests/testDF/test_hit1.c:32  store volatile i32* %5, i32** @out, align 8, !dbg !35, !tbaa !36\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit2.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %3 = call i32* @__inet_lookup_established(), !dbg !32\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %3 = call i32* @__inet_lookup_established(), !dbg !32\n  at: main() in tests/testDF/test_hit2.c:32\nsink:   store volatile i32* %2, i32** @out, align 8, !dbg !29, !tbaa !30\n  at: func4() in tests/testDF/test_hit2.c:15\nflow:\n[#10] __inet_lookup_established() in tests/testDF/test_hit2.c:9\n[#9] main() in tests/testDF/test_hit2.c:32  %3 = call i32* @__inet_lookup_established(), !dbg !32\n[#8] main() in tests/testDF/test_hit2.c:33  %5 = call i32* @func1(i8* %4), !dbg !34\n[#7] func1() in tests/testDF/test_hit2.c:27i8* %0\n[#6] func1() in tests/testDF/test_hit2.c:28  %2 = call i32* @func2(i8* %0), !dbg !28\n[#5] func2() in tests/testDF/test_hit2.c:23i8* %0\n[#4] func2() in tests/testDF/test_hit2.c:24  %2 = call i32* @func3(i8* %0), !dbg !28\n[#3] func3() in tests/testDF/test_hit2.c:19i8* %0\n[#2] func3() in tests/testDF/test_hit2.c:20  %2 = call i32* @func4(i8* %0), !dbg !28\n[#1] func4() in tests/testDF/test_hit2.c:14i8* %0\n[#0] func4() in tests/testDF/test_hit2.c:15  store volatile i32* %2, i32** @out, align 8, !dbg !29, !tbaa !30\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit3.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %1 = call i32* @__inet_lookup_established(), !dbg !26\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %1 = call i32* @__inet_lookup_established(), !dbg !26\n  at: func4() in tests/testDF/test_hit3.c:15\nsink:   store volatile i32* %3, i32** @out, align 8, !dbg !32, !tbaa !33\n  at: main() in tests/testDF/test_hit3.c:32\nflow:\n[#10] __inet_lookup_established() in tests/testDF/test_hit3.c:9\n[#9] func4() in tests/testDF/test_hit3.c:15  %1 = call i32* @__inet_lookup_established(), !dbg !26\n[#8] func4() in tests/testDF/test_hit3.c:16  ret i32* %1, !dbg !28\n[#7] func3() in tests/testDF/test_hit3.c:20  %1 = call i32* @func4(), !dbg !24\n[#6] func3() in tests/testDF/test_hit3.c:20  ret i32* %1, !dbg !25\n[#5] func2() in tests/testDF/test_hit3.c:24  %1 = call i32* @func3(), !dbg !24\n[#4] func2() in tests/testDF/test_hit3.c:24  ret i32* %1, !dbg !25\n[#3] func1() in tests/testDF/test_hit3.c:28  %1 = call i32* @func2(), !dbg !24\n[#2] func1() in tests/testDF/test_hit3.c:28  ret i32* %1, !dbg !25\n[#1] main() in tests/testDF/test_hit3.c:32  %3 = call i32* @func1(), !dbg !31\n[#0] main() in tests/testDF/test_hit3.c:32  store volatile i32* %3, i32** @out, align 8, !dbg !32, !tbaa !33\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit4.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %1 = call i32* @__inet_lookup_established(), !dbg !26\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %1 = call i32* @__inet_lookup_established(), !dbg !26\n  at: func4() in tests/testDF/test_hit4.c:15\nsink:   store volatile i32* %2, i32** @out, align 8, !dbg !29, !tbaa !30\n  at: func7() in tests/testDF/test_hit4.c:32\nflow:\n[#16] __inet_lookup_established() in tests/testDF/test_hit4.c:9\n[#15] func4() in tests/testDF/test_hit4.c:15  %1 = call i32* @__inet_lookup_established(), !dbg !26\n[#14] func4() in tests/testDF/test_hit4.c:16  ret i32* %1, !dbg !28\n[#13] func3() in tests/testDF/test_hit4.c:20  %1 = call i32* @func4(), !dbg !24\n[#12] func3() in tests/testDF/test_hit4.c:20  ret i32* %1, !dbg !25\n[#11] func2() in tests/testDF/test_hit4.c:24  %1 = call i32* @func3(), !dbg !24\n[#10] func2() in tests/testDF/test_hit4.c:24  ret i32* %1, !dbg !25\n[#9] func1() in tests/testDF/test_hit4.c:28  %1 = call i32* @func2(), !dbg !24\n[#8] func1() in tests/testDF/test_hit4.c:28  ret i32* %1, !dbg !25\n[#7] main() in tests/testDF/test_hit4.c:47  %3 = call i32* @func1(), !dbg !32\n[#6] main() in tests/testDF/test_hit4.c:48  %5 = call i32* @func5(i8* %4), !dbg !34\n[#5] func5() in tests/testDF/test_hit4.c:41i8* %0\n[#4] func5() in tests/testDF/test_hit4.c:42  %2 = call i32* @func6(i8* %0), !dbg !28\n[#3] func6() in tests/testDF/test_hit4.c:36i8* %0\n[#2] func6() in tests/testDF/test_hit4.c:37  %2 = call i32* @func7(i8* %0), !dbg !28\n[#1] func7() in tests/testDF/test_hit4.c:31i8* %0\n[#0] func7() in tests/testDF/test_hit4.c:32  store volatile i32* %2, i32** @out, align 8, !dbg !29, !tbaa !30\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit5.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %1 = call i32* @__inet_lookup_established(), !dbg !26\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %1 = call i32* @__inet_lookup_established(), !dbg !26\n  at: func4() in tests/testDF/test_hit5.c:15\nsink:   store volatile i32* %1, i32** @out, align 8, !dbg !28, !tbaa !29\n  at: func4() in tests/testDF/test_hit5.c:16\nflow:\n[#2] __inet_lookup_established() in tests/testDF/test_hit5.c:9\n[#1] func4() in tests/testDF/test_hit5.c:15  %1 = call i32* @__inet_lookup_established(), !dbg !26\n[#0] func4() in tests/testDF/test_hit5.c:16  store volatile i32* %1, i32** @out, align 8, !dbg !28, !tbaa !29\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit6.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n  %3 = call i32* @__test_source(), !dbg !32\n- sinks:\n  call void @__test_sink(i8* %6), !dbg !35\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: test_rule\nsource:   %3 = call i32* @__test_source(), !dbg !32\n  at: main() in tests/testDF/test_hit6.c:35\nsink:   call void @__test_sink(i8* %6), !dbg !35\n  at: main() in tests/testDF/test_hit6.c:36\nflow:\n[#18] __test_source() in tests/testDF/test_hit6.c:13\n[#17] main() in tests/testDF/test_hit6.c:35  %3 = call i32* @__test_source(), !dbg !32\n[#16] main() in tests/testDF/test_hit6.c:36  %5 = call i32* @func1(i8* %4), !dbg !34\n[#15] func1() in tests/testDF/test_hit6.c:30i8* %0\n[#14] func1() in tests/testDF/test_hit6.c:31  %2 = call i32* @func2(i8* %0), !dbg !28\n[#13] func2() in tests/testDF/test_hit6.c:26i8* %0\n[#12] func2() in tests/testDF/test_hit6.c:27  %2 = call i32* @func3(i8* %0), !dbg !28\n[#11] func3() in tests/testDF/test_hit6.c:22i8* %0\n[#10] func3() in tests/testDF/test_hit6.c:23  %2 = call i32* @func4(i8* %0), !dbg !28\n[#9] func4() in tests/testDF/test_hit6.c:18i8* %0\n[#8] func4() in tests/testDF/test_hit6.c:19  ret i32* %2, !dbg !29\n[#7] func3() in tests/testDF/test_hit6.c:23  %2 = call i32* @func4(i8* %0), !dbg !28\n[#6] func3() in tests/testDF/test_hit6.c:23  ret i32* %2, !dbg !29\n[#5] func2() in tests/testDF/test_hit6.c:27  %2 = call i32* @func3(i8* %0), !dbg !28\n[#4] func2() in tests/testDF/test_hit6.c:27  ret i32* %2, !dbg !29\n[#3] func1() in tests/testDF/test_hit6.c:31  %2 = call i32* @func2(i8* %0), !dbg !28\n[#2] func1() in tests/testDF/test_hit6.c:31  ret i32* %2, !dbg !29\n[#1] main() in tests/testDF/test_hit6.c:36  %5 = call i32* @func1(i8* %4), !dbg !34\n[#0] main() in tests/testDF/test_hit6.c:36  call void @__test_sink(i8* %6), !dbg !35\n\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit7.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n  %3 = call i32* @__test_source(), !dbg !33\n- sinks:\n  call void @__test_sink(i8* %6), !dbg !36\n  call void @__test_sink(i8* %6), !dbg !40\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: __test_sanitizer\n--- [DATAFLOW RULE TRIGGER] ---\nrule: test_rule\nsource:   %3 = call i32* @__test_source(), !dbg !33\n  at: main() in tests/testDF/test_hit7.c:39\nsink:   call void @__test_sink(i8* %6), !dbg !36\n  at: main() in tests/testDF/test_hit7.c:40\nflow:\n[#18] __test_source() in tests/testDF/test_hit7.c:17\n[#17] main() in tests/testDF/test_hit7.c:39  %3 = call i32* @__test_source(), !dbg !33\n[#16] main() in tests/testDF/test_hit7.c:40  %5 = call i32* @func1(i8* %4), !dbg !35\n[#15] func1() in tests/testDF/test_hit7.c:34i8* %0\n[#14] func1() in tests/testDF/test_hit7.c:35  %2 = call i32* @func2(i8* %0), !dbg !29\n[#13] func2() in tests/testDF/test_hit7.c:30i8* %0\n[#12] func2() in tests/testDF/test_hit7.c:31  %2 = call i32* @func3(i8* %0), !dbg !29\n[#11] func3() in tests/testDF/test_hit7.c:26i8* %0\n[#10] func3() in tests/testDF/test_hit7.c:27  %2 = call i32* @func4(i8* %0), !dbg !29\n[#9] func4() in tests/testDF/test_hit7.c:22i8* %0\n[#8] func4() in tests/testDF/test_hit7.c:23  ret i32* %2, !dbg !30\n[#7] func3() in tests/testDF/test_hit7.c:27  %2 = call i32* @func4(i8* %0), !dbg !29\n[#6] func3() in tests/testDF/test_hit7.c:27  ret i32* %2, !dbg !30\n[#5] func2() in tests/testDF/test_hit7.c:31  %2 = call i32* @func3(i8* %0), !dbg !29\n[#4] func2() in tests/testDF/test_hit7.c:31  ret i32* %2, !dbg !30\n[#3] func1() in tests/testDF/test_hit7.c:35  %2 = call i32* @func2(i8* %0), !dbg !29\n[#2] func1() in tests/testDF/test_hit7.c:35  ret i32* %2, !dbg !30\n[#1] main() in tests/testDF/test_hit7.c:40  %5 = call i32* @func1(i8* %4), !dbg !35\n[#0] main() in tests/testDF/test_hit7.c:40  call void @__test_sink(i8* %6), !dbg !36\n\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit8.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n  %3 = call i32* @__test_source(), !dbg !33\n- sinks:\n  call void @__test_sink(i8* %9), !dbg !39\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: __test_sanitizer\n--- [DATAFLOW RULE TRIGGER] ---\nrule: test_rule\nsource:   %3 = call i32* @__test_source(), !dbg !33\n  at: main() in tests/testDF/test_hit8.c:43\nsink:   call void @__test_sink(i8* %9), !dbg !39\n  at: main() in tests/testDF/test_hit8.c:47\nflow:\n[#18] __test_source() in tests/testDF/test_hit8.c:21\n[#17] main() in tests/testDF/test_hit8.c:43  %3 = call i32* @__test_source(), !dbg !33\n[#16] main() in tests/testDF/test_hit8.c:47  %8 = call i32* @func1(i8* %4), !dbg !38\n[#15] func1() in tests/testDF/test_hit8.c:38i8* %0\n[#14] func1() in tests/testDF/test_hit8.c:39  %2 = call i32* @func2(i8* %0), !dbg !29\n[#13] func2() in tests/testDF/test_hit8.c:34i8* %0\n[#12] func2() in tests/testDF/test_hit8.c:35  %2 = call i32* @func3(i8* %0), !dbg !29\n[#11] func3() in tests/testDF/test_hit8.c:30i8* %0\n[#10] func3() in tests/testDF/test_hit8.c:31  %2 = call i32* @func4(i8* %0), !dbg !29\n[#9] func4() in tests/testDF/test_hit8.c:26i8* %0\n[#8] func4() in tests/testDF/test_hit8.c:27  ret i32* %2, !dbg !30\n[#7] func3() in tests/testDF/test_hit8.c:31  %2 = call i32* @func4(i8* %0), !dbg !29\n[#6] func3() in tests/testDF/test_hit8.c:31  ret i32* %2, !dbg !30\n[#5] func2() in tests/testDF/test_hit8.c:35  %2 = call i32* @func3(i8* %0), !dbg !29\n[#4] func2() in tests/testDF/test_hit8.c:35  ret i32* %2, !dbg !30\n[#3] func1() in tests/testDF/test_hit8.c:39  %2 = call i32* @func2(i8* %0), !dbg !29\n[#2] func1() in tests/testDF/test_hit8.c:39  ret i32* %2, !dbg !30\n[#1] main() in tests/testDF/test_hit8.c:47  %8 = call i32* @func1(i8* %4), !dbg !38\n[#0] main() in tests/testDF/test_hit8.c:47  call void @__test_sink(i8* %9), !dbg !39\n\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit9.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %3 = call %struct.sock_common* @__inet_lookup_established(), !dbg !58\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n--- [DATAFLOW RULE TRIGGER] ---\nrule: inet_lookup\nsource:   %3 = call %struct.sock_common* @__inet_lookup_established(), !dbg !58\n  at: main() in tests/testDF/test_hit9.c:54\nsink:   store volatile i32* %8, i32** @out, align 8, !dbg !65, !tbaa !66\n  at: main() in tests/testDF/test_hit9.c:57\nflow:\n[#18] __inet_lookup_established() in tests/testDF/test_hit9.c:32\n[#17] main() in tests/testDF/test_hit9.c:54  %3 = call %struct.sock_common* @__inet_lookup_established(), !dbg !58\n[#16] main() in tests/testDF/test_hit9.c:57  %8 = call i32* @func1(i8* %7), !dbg !64\n[#15] func1() in tests/testDF/test_hit9.c:49i8* %0\n[#14] func1() in tests/testDF/test_hit9.c:50  %2 = call i32* @func2(i8* %0), !dbg !54\n[#13] func2() in tests/testDF/test_hit9.c:45i8* %0\n[#12] func2() in tests/testDF/test_hit9.c:46  %2 = call i32* @func3(i8* %0), !dbg !54\n[#11] func3() in tests/testDF/test_hit9.c:41i8* %0\n[#10] func3() in tests/testDF/test_hit9.c:42  %2 = call i32* @func4(i8* %0), !dbg !54\n[#9] func4() in tests/testDF/test_hit9.c:37i8* %0\n[#8] func4() in tests/testDF/test_hit9.c:38  ret i32* %2, !dbg !55\n[#7] func3() in tests/testDF/test_hit9.c:42  %2 = call i32* @func4(i8* %0), !dbg !54\n[#6] func3() in tests/testDF/test_hit9.c:42  ret i32* %2, !dbg !55\n[#5] func2() in tests/testDF/test_hit9.c:46  %2 = call i32* @func3(i8* %0), !dbg !54\n[#4] func2() in tests/testDF/test_hit9.c:46  ret i32* %2, !dbg !55\n[#3] func1() in tests/testDF/test_hit9.c:50  %2 = call i32* @func2(i8* %0), !dbg !54\n[#2] func1() in tests/testDF/test_hit9.c:50  ret i32* %2, !dbg !55\n[#1] main() in tests/testDF/test_hit9.c:57  %8 = call i32* @func1(i8* %7), !dbg !64\n[#0] main() in tests/testDF/test_hit9.c:57  store volatile i32* %8, i32** @out, align 8, !dbg !65, !tbaa !66\n\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_backwards_contained01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.socket_alloc: %struct.socket* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n--- [DATAFLOW RULE TRIGGER] ---\nrule: backwards_contained\nsource: struct.socket_alloc: %struct.socket* %0\n  at: SOCK_INODE() in tests/testDF/test_hit_backwards_contained01.c:35\nsink: struct.tun_file: %struct.socket* getelementptr inbounds (%struct.tun_file, %struct.tun_file* @tfile_storage, i64 0, i32 1)\nflow:\n[#2] SOCK_INODE() in tests/testDF/test_hit_backwards_contained01.c:33%struct.socket* %0\n[#1] sock_init_data() in tests/testDF/test_hit_backwards_contained01.c:38%struct.socket* %0\n[#0] %struct.socket* getelementptr inbounds (%struct.tun_file, %struct.tun_file* @tfile_storage, i64 0, i32 1)\n\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\n/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_backwards_contained02.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.socket_alloc: %struct.socket* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n--- [DATAFLOW RULE TRIGGER] ---\nrule: backwards_contained\nsource: struct.socket_alloc: %struct.socket* %0\n  at: SOCK_INODE() in tests/testDF/test_hit_backwards_contained02.c:39\nsink: struct.tun_file: %struct.socket* getelementptr inbounds (%struct.tun_file, %struct.tun_file* @tfile_storage, i64 0, i32 1)\nflow:\n[#2] SOCK_INODE() in tests/testDF/test_hit_backwards_contained02.c:37%struct.socket* %0\n[#1] sock_init_data() in tests/testDF/test_hit_backwards_contained02.c:42%struct.socket* %0\n[#0] %struct.socket* getelementptr inbounds (%struct.tun_file, %struct.tun_file* @tfile_storage, i64 0, i32 1)\n\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\n/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_kobj01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.other_container: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n--- [DATAFLOW RULE TRIGGER] ---\nrule: kobj\nkobj was contained differently!\nsource: struct.cpufreq_policy: %struct.kobject* %0\n  at: main() in tests/testDF/test_hit_kobj01.c:43\nsink: struct.other_container:   store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !88, !tbaa !89\n  at: show() in tests/testDF/test_hit_kobj01.c:13\nflow:\n[#2] show() in tests/testDF/test_hit_kobj01.c:11%struct.kobject* %0\n[#1] show() in tests/testDF/test_hit_kobj01.c:13  %8 = ptrtoint %struct.kobject* %0 to i64, !dbg !88\n[#0] show() in tests/testDF/test_hit_kobj01.c:13  store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !88, !tbaa !89\n\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_kobj02.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.other_container: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n%struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n--- [DATAFLOW RULE TRIGGER] ---\nrule: kobj\nkobj was not contained!\nsource: %struct.kobject* %0\n  at: main() in tests/testDF/test_hit_kobj02.c:42\nsink: struct.other_container:   store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !84, !tbaa !85\n  at: show() in tests/testDF/test_hit_kobj02.c:13\nflow:\n[#2] show() in tests/testDF/test_hit_kobj02.c:11%struct.kobject* %0\n[#1] show() in tests/testDF/test_hit_kobj02.c:13  %8 = ptrtoint %struct.kobject* %0 to i64, !dbg !84\n[#0] show() in tests/testDF/test_hit_kobj02.c:13  store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !84, !tbaa !85\n\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_kobj03.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.outer_container2: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n--- [DATAFLOW RULE TRIGGER] ---\nrule: kobj\nkobj was contained differently!\nsource: struct.cpufreq_policy: %struct.kobject* %0\n  at: func2() in tests/testDF/test_hit_kobj03.c:40\nsink: struct.outer_container2:   store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !96, !tbaa !97\n  at: show() in tests/testDF/test_hit_kobj03.c:13\nflow:\n[#2] show() in tests/testDF/test_hit_kobj03.c:11%struct.kobject* %0\n[#1] show() in tests/testDF/test_hit_kobj03.c:13  %8 = ptrtoint %struct.kobject* %0 to i64, !dbg !96\n[#0] show() in tests/testDF/test_hit_kobj03.c:13  store volatile i64 %8, i64* @__container_of_flow_ptr_in, align 8, !dbg !96, !tbaa !97\n\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_list_entry_correlation01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 3\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test:   %1 = alloca %struct.list_head, align 8\nstruct.test1: %struct.list_head* %0\nstruct.test1: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !32\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test:   %1 = alloca %struct.list_head, align 8\n  at: func1() in tests/testDF/test_hit_list_entry_correlation01.c:32\nsink: struct.test1:   store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !67, !tbaa !68\n  at: func2() in tests/testDF/test_hit_list_entry_correlation01.c:25\nflow:\n[#4] func1() in   %1 = alloca %struct.list_head, align 8\n[#3] func1() in tests/testDF/test_hit_list_entry_correlation01.c:33  call fastcc void @func2(%struct.list_head* nonnull %1), !dbg !61\n[#2] func2() in tests/testDF/test_hit_list_entry_correlation01.c:23%struct.list_head* %0\n[#1] func2() in tests/testDF/test_hit_list_entry_correlation01.c:25  %6 = ptrtoint %struct.list_head* %0 to i64, !dbg !67\n[#0] func2() in tests/testDF/test_hit_list_entry_correlation01.c:25  store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !67, !tbaa !68\n\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.test1: %struct.list_head* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_list_entry_correlation02.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 3\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test1:   %1 = alloca %struct.list_head, align 8\nstruct.test: %struct.list_head* %0\nstruct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !31\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test1:   %1 = alloca %struct.list_head, align 8\n  at: func1() in tests/testDF/test_hit_list_entry_correlation02.c:32\nsink: struct.test:   call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !46\n  at: func2() in tests/testDF/test_hit_list_entry_correlation02.c:26\nflow:\n[#3] func1() in   %1 = alloca %struct.list_head, align 8\n[#2] func1() in tests/testDF/test_hit_list_entry_correlation02.c:33  call fastcc void @func2(%struct.list_head* nonnull %1), !dbg !48\n[#1] func2() in tests/testDF/test_hit_list_entry_correlation02.c:24%struct.list_head* %0\n[#0] func2() in tests/testDF/test_hit_list_entry_correlation02.c:26  call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !46\n\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n/path/to/uncontained/tests/testDF/test_hit_list_entry_correlation03.c:26:19: warning: incompatible pointer types initializing 'struct test1 *' with an expression of type 'struct test *' [-Wincompatible-pointer-types]\n    struct test1 *test = list_entry(head, struct test, list);\n                  ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n1 warning generated.\n---\u003e /path/to/uncontained/tests/testDF/test_hit_list_entry_correlation03.c\n/path/to/uncontained/tests/testDF/test_hit_list_entry_correlation03.c:26:19: warning: incompatible pointer types initializing 'struct test1 *' with an expression of type 'struct test *' [-Wincompatible-pointer-types]\n    struct test1 *test = list_entry(head, struct test, list);\n                  ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n1 warning generated.\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 2\nkobj\nlist_entry_correlation\ndone: 4\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test1:   %1 = alloca %struct.list_head, align 8\nstruct.test1: %struct.list_head* %0\nstruct.test: %struct.list_head* %0\nstruct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !35\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test1:   %1 = alloca %struct.list_head, align 8\n  at: func1() in tests/testDF/test_hit_list_entry_correlation03.c:40\nsink: struct.test:   store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n  at: func3() in tests/testDF/test_hit_list_entry_correlation03.c:26\nflow:\n[#6] func1() in   %1 = alloca %struct.list_head, align 8\n[#5] func1() in tests/testDF/test_hit_list_entry_correlation03.c:41  call fastcc void @func2(%struct.list_head* nonnull %1), !dbg !64\n[#4] func2() in tests/testDF/test_hit_list_entry_correlation03.c:30%struct.list_head* %0\n[#3] func2() in tests/testDF/test_hit_list_entry_correlation03.c:34  call fastcc void @func3(%struct.list_head* %0), !dbg !84\n[#2] func3() in tests/testDF/test_hit_list_entry_correlation03.c:24%struct.list_head* %0\n[#1] func3() in tests/testDF/test_hit_list_entry_correlation03.c:26  %6 = ptrtoint %struct.list_head* %0 to i64, !dbg !70\n[#0] func3() in tests/testDF/test_hit_list_entry_correlation03.c:26  store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test1: %struct.list_head* %0\n  at: func2() in tests/testDF/test_hit_list_entry_correlation03.c:32\nsink: struct.test:   store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n  at: func3() in tests/testDF/test_hit_list_entry_correlation03.c:26\nflow:\n[#4] func2() in tests/testDF/test_hit_list_entry_correlation03.c:30%struct.list_head* %0\n[#3] func2() in tests/testDF/test_hit_list_entry_correlation03.c:34  call fastcc void @func3(%struct.list_head* %0), !dbg !84\n[#2] func3() in tests/testDF/test_hit_list_entry_correlation03.c:24%struct.list_head* %0\n[#1] func3() in tests/testDF/test_hit_list_entry_correlation03.c:26  %6 = ptrtoint %struct.list_head* %0 to i64, !dbg !70\n[#0] func3() in tests/testDF/test_hit_list_entry_correlation03.c:26  store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !35\n  at: main() in tests/testDF/test_hit_list_entry_correlation03.c:53\nsink: struct.test1:   store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n  at: func2() in tests/testDF/test_hit_list_entry_correlation03.c:32\nflow:\n[#4] @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !35\n[#3] main() in tests/testDF/test_hit_list_entry_correlation03.c:54  call fastcc void @func2(%struct.list_head* nonnull @test_list_decoy), !dbg !69\n[#2] func2() in tests/testDF/test_hit_list_entry_correlation03.c:30%struct.list_head* %0\n[#1] func2() in tests/testDF/test_hit_list_entry_correlation03.c:32  %6 = ptrtoint %struct.list_head* %0 to i64, !dbg !70\n[#0] func2() in tests/testDF/test_hit_list_entry_correlation03.c:32  store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !70, !tbaa !71\n\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.test1: %struct.list_head* %0\nstruct.test: %struct.list_head* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 3\ntotal: 3\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_list_entry_correlation04.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 4\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !34\nstruct.test1: %struct.list_head* %0\nstruct.test: %struct.list_head* %0\nstruct.test1:   %1 = alloca %struct.list_head, align 8\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !34\n  at: main() in tests/testDF/test_hit_list_entry_correlation04.c:52\nsink: struct.test1:   store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !69, !tbaa !70\n  at: func2() in tests/testDF/test_hit_list_entry_correlation04.c:31\nflow:\n[#4] @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !34\n[#3] main() in tests/testDF/test_hit_list_entry_correlation04.c:53  call fastcc void @func2(%struct.list_head* nonnull @test_list_decoy), !dbg !68\n[#2] func2() in tests/testDF/test_hit_list_entry_correlation04.c:29%struct.list_head* %0\n[#1] func2() in tests/testDF/test_hit_list_entry_correlation04.c:31  %6 = ptrtoint %struct.list_head* %0 to i64, !dbg !69\n[#0] func2() in tests/testDF/test_hit_list_entry_correlation04.c:31  store volatile i64 %6, i64* @__list_entry_flow_ptr_in, align 8, !dbg !69, !tbaa !70\n\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test1: %struct.list_head* %0\n  at: func2() in tests/testDF/test_hit_list_entry_correlation04.c:31\nsink: struct.test:   call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !61\n  at: func3() in tests/testDF/test_hit_list_entry_correlation04.c:26\nflow:\n[#3] func2() in tests/testDF/test_hit_list_entry_correlation04.c:29%struct.list_head* %0\n[#2] func2() in tests/testDF/test_hit_list_entry_correlation04.c:33  call fastcc void @func3(%struct.list_head* %0), !dbg !83\n[#1] func3() in tests/testDF/test_hit_list_entry_correlation04.c:24%struct.list_head* %0\n[#0] func3() in tests/testDF/test_hit_list_entry_correlation04.c:26  call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !61\n\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_correlation\nsource: struct.test1:   %1 = alloca %struct.list_head, align 8\n  at: func1() in tests/testDF/test_hit_list_entry_correlation04.c:39\nsink: struct.test:   call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !61\n  at: func3() in tests/testDF/test_hit_list_entry_correlation04.c:26\nflow:\n[#5] func1() in   %1 = alloca %struct.list_head, align 8\n[#4] func1() in tests/testDF/test_hit_list_entry_correlation04.c:40  call fastcc void @func2(%struct.list_head* nonnull %1), !dbg !63\n[#3] func2() in tests/testDF/test_hit_list_entry_correlation04.c:29%struct.list_head* %0\n[#2] func2() in tests/testDF/test_hit_list_entry_correlation04.c:33  call fastcc void @func3(%struct.list_head* %0), !dbg !83\n[#1] func3() in tests/testDF/test_hit_list_entry_correlation04.c:24%struct.list_head* %0\n[#0] func3() in tests/testDF/test_hit_list_entry_correlation04.c:26  call fastcc void @list_add(%struct.list_head* getelementptr inbounds (%struct.test, %struct.test* @test_storage, i64 0, i32 1), %struct.list_head* %0), !dbg !61\n\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.test1: %struct.list_head* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntests/: 3\ntotal: 3\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_hit_list_entry_null.c\n[WARNING] No function found for sanitizer: list_is_last\n[WARNING] No function found for sanitizer: list_is_first\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n---------- [RULES] ----------\nlist_entry_null\n---------- [checking...] ----------\n[rule]: list_entry_null\n- sources:\n  %3 = call i8* @__uncontained_list_entry_source(i8* %2), !dbg !48\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowInstructionSanitizer: {id: 58}\n--- [DATAFLOW RULE TRIGGER] ---\nrule: list_entry_null\nsource:   %3 = call i8* @__uncontained_list_entry_source(i8* %2), !dbg !48\n  at: func() in tests/testDF/test_hit_list_entry_null.c:88\nsink:   %5 = icmp eq i8* %3, null, !dbg !51\n  at: func() in tests/testDF/test_hit_list_entry_null.c:90\nflow:\n[#2] __uncontained_list_entry_source() in tests/testDF/test_hit_list_entry_null.c:13\n[#1] func() in tests/testDF/test_hit_list_entry_null.c:88  %3 = call i8* @__uncontained_list_entry_source(i8* %2), !dbg !48\n[#0] func() in tests/testDF/test_hit_list_entry_null.c:90  %5 = icmp eq i8* %3, null, !dbg !51\n\n---------- [REPORT STAT] ----------\ntests/: 1\ntotal: 1\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit1.c\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %3 = call i32* @__inet_lookup_established(), !dbg !32\n- sinks:\n  ANY\n- ignores:\n  kmem_cache_free\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit2.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n  %3 = call i32* @__test_source(), !dbg !33\n- sinks:\n  call void @__test_sink(i8* %9), !dbg !39\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: __test_sanitizer\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit3.c\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n  %3 = call %struct.sock_common* @__inet_lookup_established(), !dbg !57\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_backwards_contained01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.socket_alloc: %struct.socket* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_backwards_contained02.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.socket_alloc: %struct.socket* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_kobj01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_kobj03.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 2\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\nstruct.outer_container: i8* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_kobj04.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.outer_container: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\nstruct.cpufreq_policy: %struct.kobject* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry1.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n  %3 = call i8* @__uncontained_list_entry_source(i8* %2), !dbg !62\n  %23 = call i8* @__uncontained_list_entry_source(i8* %22), !dbg !85\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __uncontained_list_entry_is_head\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry2.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n  %2 = call i8* @__uncontained_list_entry_source(i8* %1), !dbg !46\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: list_empty\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry3.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n[WARNING] No function found for sanitizer: __list_add\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 0\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n  %8 = call i8* @__uncontained_list_entry_source(i8* %7), !dbg !61\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: list_empty\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry4.c\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n---------- [RULES] ----------\nlist_entry_strict\n---------- [checking...] ----------\n[rule]: list_entry_strict\n- sources:\n  %2 = call i8* @__uncontained_list_entry_source(i8* %1), !dbg !49\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowInstructionSanitizer: {id: 213909532}\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation01.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 1\nkobj\nlist_entry_correlation\ndone: 3\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test: %struct.list_head* %0\nstruct.test:   %1 = alloca %struct.list_head, align 8\nstruct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !27\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\nstruct.test: %struct.list_head* %0\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation02.c\n[WARNING] No function found for source: __inet_lookup_established\n[WARNING] Ignore function not found: kmem_cache_free\n[WARNING] No function found for sanitizer: sk_fullsock\n[WARNING] No function found for source: __test_source\n[WARNING] No function found for sink: __test_sink\n[WARNING] No function found for sanitizer: __test_sanitizer\n[WARNING] No function found for source: __uncontained_list_entry_source\n[WARNING] No function found for sanitizer: list_empty\n[WARNING] No function found for sanitizer: list_is_head\n[WARNING] No function found for sanitizer: __uncontained_list_entry_is_head\n[WARNING] No function found for sanitizer: kfree\n[WARNING] No function found for sanitizer: __free_pages\n---------- [RULES] ----------\ninet_lookup\ntest_rule\nlist_entry\nbackwards_contained\ndone: 0\nkobj\nlist_entry_correlation\ndone: 2\n---------- [checking...] ----------\n[rule]: list_entry_correlation\n- sources:\nstruct.test:   %1 = alloca %struct.list_head, align 8\nstruct.test: @test_list_decoy = internal global %struct.list_head zeroinitializer, align 8, !dbg !31\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: __list_add\n[rule]: test_rule\n- sources:\n- sinks:\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n[rule]: inet_lookup\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowInstructionSanitizer: {id: 58, offset: 18}\n  DataflowFunctionCallSanitizer: NULL\n[rule]: list_entry\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n  DataflowFunctionCallSanitizer: NULL\n[rule]: backwards_contained\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n[rule]: kobj\n- sources:\n- sinks:\n  ANY\n- ignores:\n- sanitizers:\n---------- [REPORT STAT] ----------\ntotal: 0\nAnalysis time: 00.000\n\n/path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation03.c:26:19: warning: incompatible pointer types initializing 'struct test1 *' with an expression of type 'struct test *' [-Wincompatible-pointer-types]\n    struct test1 *test = list_entry(head, struct test, list);\n                  ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation03.c:32:19: warning: incompatible pointer types initializing 'struct test1 *' with an expression of type 'struct test *' [-Wincompatible-pointer-types]\n    struct test1 *test = list_entry(head, struct test, list);\n                  ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n2 warnings generated.\n---\u003e /path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation03.c\n/path/to/uncontained/tests/testDF/test_nohit_list_entry_correlation03.c:26:19: warning: incompatible pointer types initializing 'struct test1 *' with an expression of type 'struct test *' [-Wincompatible-pointer-types]\n    struct test1 *test = list_entry(head, struct test, list);\n     ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvusec%2Funcontained","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvusec%2Funcontained","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvusec%2Funcontained/lists"}