Skip to content

fix: clamp numMasksInChunk to prevent heap-buffer-overflow in EmbeddingExtractor#398

Merged
Alex-Wengg merged 1 commit intoFluidInference:mainfrom
pantafive:fix/embedding-extractor-overflow
Mar 19, 2026
Merged

fix: clamp numMasksInChunk to prevent heap-buffer-overflow in EmbeddingExtractor#398
Alex-Wengg merged 1 commit intoFluidInference:mainfrom
pantafive:fix/embedding-extractor-overflow

Conversation

@pantafive
Copy link
Copy Markdown
Contributor

@pantafive pantafive commented Mar 19, 2026

When audio.count > 160,000 samples (>10s at 16kHz), the numMasksInChunk formula (firstMask.count * audio.count + 80_000) / 160_000 produces a value larger than firstMask.count. This causes vDSP_mmov in fillMaskBufferOptimized() to read past the mask buffer allocation.

For example, with maskCount=100 and 20s audio (320k samples):
buggy: (100 * 320000 + 80000) / 160000 = 200 — 2x overread
fixed: min(200, 100) = 100

The fix clamps numMasksInChunk to firstMask.count with min().

Bug introduced in v0.8.0 (PR #191, 2025-11-26). Affects v0.8.0–v0.12.4. Detected via AddressSanitizer: READ of size 3456 from 2388-byte buffer.

Includes regression tests validating the formula and vDSP_mmov bounds.


Open with Devin

…ngExtractor

When audio.count > 160,000 samples (>10s at 16kHz), the numMasksInChunk
formula `(firstMask.count * audio.count + 80_000) / 160_000` produces a
value larger than firstMask.count. This causes vDSP_mmov in
fillMaskBufferOptimized() to read past the mask buffer allocation.

For example, with maskCount=100 and 20s audio (320k samples):
  buggy:  (100 * 320000 + 80000) / 160000 = 200 — 2x overread
  fixed:  min(200, 100) = 100

The fix clamps numMasksInChunk to firstMask.count with min().

Bug introduced in v0.8.0 (PR FluidInference#191, 2025-11-26). Affects v0.8.0–v0.12.4.
Detected via AddressSanitizer: READ of size 3456 from 2388-byte buffer.

Includes regression tests validating the formula and vDSP_mmov bounds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

@Alex-Wengg Alex-Wengg merged commit 581e215 into FluidInference:main Mar 19, 2026
14 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants