Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
`source` called with a dynamic path — sourcing a variable script path (ast pass, confidence 0.75)
. $MINICONDA/etc/profile.d/conda.sh
conda activate pyarrow-$PYTHON
export ARROW_HOME=$CONDA_PREFIX
likely benign
LLM, confidence 0.90
Sources the conda activation script from a variable install path.
Reasoning
Sourcing conda's profile script from a MINICONDA variable path is standard shell setup for an Arrow build example; no obfuscation or malicious behavior.
-
`source` called with a dynamic path — sourcing a variable script path (ast pass, confidence 0.75)
python3 -m venv $WORKDIR/venv
source $WORKDIR/venv/bin/activate
git config --global --add safe.directory $ARROW_ROOT
likely benign
LLM, confidence 0.90
Activates a Python virtualenv created in the same script.
Reasoning
Activating a venv created just above at $WORKDIR/venv is ordinary build scripting, not an injection vector.
-
reach-by-name through `globals` (ast pass, confidence 0.60)
try:
return globals()[class_name]
except KeyError:
warnings.warn(f"Python binding for {class_name} not exposed",
likely benign
LLM, confidence 0.85
Retrieves a binding class from globals() by name with a KeyError fallback.
Reasoning
Looking up a generated function wrapper by name in module globals is a common Python dispatch idiom; the class_name is internal and the fallback only warns.
-
identifier `𝑓ö` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)
def test_slice_compatibility():
arr = pa.array(["", "𝑓", "𝑓ö", "𝑓öõ", "𝑓öõḍ", "𝑓öõḍš"])
for start in range(-6, 6):
for stop in itertools.chain(range(-6, 6), [None]):
-
identifier `𝑓öõ` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)
def test_slice_compatibility():
arr = pa.array(["", "𝑓", "𝑓ö", "𝑓öõ", "𝑓öõḍ", "𝑓öõḍš"])
for start in range(-6, 6):
for stop in itertools.chain(range(-6, 6), [None]):
-
identifier `𝑓öõḍ` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)
def test_slice_compatibility():
arr = pa.array(["", "𝑓", "𝑓ö", "𝑓öõ", "𝑓öõḍ", "𝑓öõḍš"])
for start in range(-6, 6):
for stop in itertools.chain(range(-6, 6), [None]):
-
identifier `𝑓öõḍš` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)
def test_slice_compatibility():
arr = pa.array(["", "𝑓", "𝑓ö", "𝑓öõ", "𝑓öõḍ", "𝑓öõḍš"])
for start in range(-6, 6):
for stop in itertools.chain(range(-6, 6), [None]):
-
identifier `πb` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
arr = pa.array([None, '', 'π', 'πb', 'πbθ', 'πbθd', 'πbθde'])
series = arr.to_pandas().astype(object).replace({np.nan: None})
for start in offsets:
-
identifier `πbθ` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
arr = pa.array([None, '', 'π', 'πb', 'πbθ', 'πbθd', 'πbθde'])
series = arr.to_pandas().astype(object).replace({np.nan: None})
for start in offsets:
-
identifier `πbθd` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
arr = pa.array([None, '', 'π', 'πb', 'πbθ', 'πbθd', 'πbθde'])
series = arr.to_pandas().astype(object).replace({np.nan: None})
for start in offsets:
-
identifier `πbθde` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
arr = pa.array([None, '', 'π', 'πb', 'πbθ', 'πbθd', 'πbθde'])
series = arr.to_pandas().astype(object).replace({np.nan: None})
for start in offsets:
-
concatenated bytes literal contains 77 `\xNN` escapes (63% of content) — binary payload shape (ast pass, confidence 0.85)
projection = (b'\nS\x08\x0c\x12Ohttps://github.com/apache/arrow/blob/main/format'
b'/substrait/extension_types.yaml\x12\t\n\x07\x08\x0c\x1a\x03u64'
b'\x12\x0b\n\t\x08\x0c\x10\x01\x1a\x03u32\x1a\x0f\n\x08\x12\x06'
likely benign
LLM, confidence 0.90
Test fixture holding a serialized Substrait projection plan as bytes.
Reasoning
The bytes are a Substrait protobuf plan containing readable strings such as a YAML extension URL and type names; this is a serialized test fixture, not a hidden payload.
-
concatenated bytes literal contains 107 `\xNN` escapes (65% of content) — binary payload shape (ast pass, confidence 0.85)
b'\n\x04b\x02\x10\x01\x18\x01\n\x04*\x02\x10\x01\n\x04b\x02\x10\x01')
filtering = (b'\n\x1e\x08\x06\x12\x1a/functions_comparison.yaml\nS\x08\x0c\x12'
b'Ohttps://github.com/apache/arrow/blob/main/format'
likely benign
LLM, confidence 0.90
Test fixture holding a serialized Substrait filter plan as bytes.
Reasoning
Same pattern: a Substrait filter plan encoded as protobuf bytes in a test, with readable embedded YAML URIs and function names.
-
file imports decoder module(s) bz2, gzip and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)
decompressed_buf = pa.decompress(compressed_buf, INPUT_SIZE,
codec=compression)
decompressed_bytes = pa.decompress(compressed_bytes, INPUT_SIZE,
likely benign
LLM, confidence 0.90
Round-trip test calling Arrow's decompress with a chosen codec.
Reasoning
pa.decompress is the Arrow codec API exercised by a compression round-trip test on generated data; it is not runtime execution of a hidden payload.
-
concatenated bytes literal contains 34 `\xNN` escapes (63% of content) — binary payload shape (ast pass, confidence 0.85)
message = (b'\x1a\x1b\n\x08\x12\x06\n\x04\x12\x02\x08\x01\x1a\x0fproject_release'
b'\x1a\x19\n\x06\x12\x04\n\x02\x12\x00\x1a\x0fproject_version'
b'"0\n\x0fproject_version\n\x0fproject_release'
likely benign
LLM, confidence 0.90
Test fixture holding a serialized Substrait message as bytes.
Reasoning
A Substrait plan serialized as protobuf bytes for a test, containing readable field names like project_release; consistent with legitimate test data.
-
`sys._getframe` — call-stack frame introspection (ast pass, confidence 0.70)
assert wr() is not None
_break_traceback_cycle_from_frame(sys._getframe(0))
assert wr() is None
likely benign
LLM, confidence 0.90
Passes the current frame to a helper that breaks traceback cycles in tests.
Reasoning
sys._getframe(0) is used to break a traceback reference cycle in a test helper, a legitimate memory-management technique.
-
`sys._getframe` — call-stack frame introspection (ast pass, confidence 0.70)
this_frame = sys._getframe(0)
refs = gc.get_referrers(frame)
while refs:
likely benign
LLM, confidence 0.90
Gets the current frame to find and clear reference cycles.
Reasoning
Frame introspection with gc.get_referrers is used to avoid reference cycles when handling frames; a documented memory-hygiene pattern in library code.
-
reach-by-name through `vars.get` (ast pass, confidence 0.60)
try:
obj = vars(parent).get(part)
if obj is not None:
continue
likely benign
LLM, confidence 0.90
Looks up a named member on a parent object to update stub docstrings.
Reasoning
vars(parent).get(part) is ordinary attribute lookup while resolving module members for docstring updates; no dynamic execution or concealment.
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.