# UNDF: UNDF-2026-000000348 ## Apache Ant — CWE-407 Scan Result: CLEAN Scanned: `src/main/org/apache/tools/ant/` (depth=1 clone, 2026-03-27) ### Patterns checked | Location | Type | Verdict | |----------|------|---------| | `DirectoryScanner.processIncluded()` L1348 | `inc/exc/des.contains()` | CLEAN — lists are `VectorSet<>` (O(1) HashSet-backed `contains()`) | | `Project.executeTargets()` | `succeededTargets.contains()` | CLEAN — `HashSet` | | `ComponentHelper` | `checkedNamespaces.contains()` | CLEAN — `HashSet` | | `AntAnalyzer.determineDependencies()` | `dependencies.contains()` | CLEAN — `HashSet` | | `Javadoc` | `addedPackages.contains()` | CLEAN — `HashSet` | | `Main.handleArg()` | `LAUNCH_COMMANDS.contains()` | CLEAN — `unmodifiableSet(HashSet)` | ### Key finding Ant already fixed the O(N) `DirectoryScanner` `contains()` issue in **Ant 1.8.0** by introducing `VectorSet` (`src/main/org/apache/tools/ant/util/VectorSet.java`). `VectorSet.contains()` delegates to an internal `HashSet` — O(1). The class comment says it was created precisely because the `protected` field types in `DirectoryScanner` prevented switching to a pure `HashSet`. No CWE-407 defects found.