onnxruntime
3c8c4602 - Fix TreeEnsemble target id validation (#29293)

Commit
32 days ago
Fix TreeEnsemble target id validation (#29293) ## Fix TreeEnsemble target id validation ### Problem `TreeEnsemble` opset 5 normalizes `leaf_targetids` into the internal v3-shaped attributes without going through the v3 attribute constructor. Invalid target ids could therefore reach the N-output aggregators, where Min/Max indexed the `predictions` vector without a bounds check. ### Fix - Centralize target/class id validation in `TreeEnsembleCommon::Init()` so all normalized entry paths are covered. - Reject non-positive target/class counts, negative target/class ids, and ids greater than or equal to the target/class count. - Add defense-in-depth target index checks in Sum/Min/Max N-output aggregators before indexing `predictions`. - Add v5 negative tests and update affected v3 regressor negative test expectations. ### Testing - `lintrunner` on changed files - rebuilt `onnxruntime_provider_test` - targeted provider tests: - `MLOpTest.TreeEnsembleFloat` - `MLOpTest.TreeEnsembleDouble` - `MLOpTest.TreeEnsembleSetMembership` - `MLOpTest.TreeEnsembleLeafOnly` - `MLOpTest.TreeEnsembleMinLeafTargetIdsOutsideBoundary` - `MLOpTest.TreeEnsembleMaxLeafTargetIdsOutsideBoundary` - `MLOpTest.TreeEnsembleNegativeLeafTargetIds` - `MLOpTest.TreeEnsembleZeroTargets` - `MLOpTest.TreeEnsembleLeafLike` - `MLOpTest.TreeEnsembleBigSet` - `MLOpTest.TreeEnsembleIssue25400` - `MLOpTest.TreeRegressorNegativeTargetIds` - `MLOpTest.TreeRegressorOutsideBoundaryTargetIds` - `MLOpTest.TreeEnsembleRegressorTargetIdsOutsideBoundary` --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Author
Parents
Loading