From ba99e033642142c05d1527f1057ca2b2fc069bcf Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 27 Jan 2026 15:49:36 +0100 Subject: [PATCH] Add safety check for TargetSystem encoding limits --- .../datadog/trace/agent/tooling/InstrumenterIndex.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterIndex.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterIndex.java index 4270803df89..1595ab7ed0d 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterIndex.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterIndex.java @@ -391,6 +391,14 @@ static boolean decodeModuleHasTargetSystemOverrides(byte flags) { } static short encodeTargetSystems(Set targetSystems) { + final int allTargetSystemsCount = InstrumenterModule.TargetSystem.values().length; + // Safety check to ensure we don’t overflow the index if additional TargetSystem enums are added + if (allTargetSystemsCount > 16) { + throw new IllegalStateException( + "Using a short will only allow encoding 16 different target systems, but found " + + allTargetSystemsCount + + ". Please use a larger data type for encoding/decoding this field."); + } short ret = 0; for (InstrumenterModule.TargetSystem ts : targetSystems) { ret |= (short) (1 << ts.ordinal());