Skip to content

in_elasticsearch: check map size before accessing first entry [Backport to 4.2]#11902

Merged
cosmo0920 merged 1 commit into
4.2from
fix/elasticsearch-empty-map-oob-4.2
Jun 3, 2026
Merged

in_elasticsearch: check map size before accessing first entry [Backport to 4.2]#11902
cosmo0920 merged 1 commit into
4.2from
fix/elasticsearch-empty-map-oob-4.2

Conversation

@cosmo0920
Copy link
Copy Markdown
Contributor

Backporting of #11856.


Enter [N/A] in the box, if an item is not applicable to your change.

Testing
Before we can approve your change; please submit the following in a comment:

  • Example configuration file for the change
  • Debug log output from testing the change
  • Attached Valgrind output that shows no leaks or memory corruption was found

If this is a change to packaging of containers or native binaries then please confirm it works for all targets.

  • Run local packaging test showing all targets (including any new ones) build.
  • Set ok-package-test label to test for all targets (requires maintainer to do).

Documentation

  • Documentation required for this feature

Backporting

  • Backport to latest stable release.

Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.

get_write_op() accesses kv[0] without checking that the map has at
least one entry. When the bulk API receives an empty JSON object {}
as the meta line, msgpack unpacks it as a map with size 0 and the
kv[0] access reads past the map allocation.

Add an early return when map size is zero.

Signed-off-by: Tristan <tristan@talencesecurity.com>
@cosmo0920 cosmo0920 requested a review from edsiper as a code owner June 3, 2026 01:51
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 3, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 18198ee2-dd41-4015-9c27-43c081acefdf

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/elasticsearch-empty-map-oob-4.2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a78d3471c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +286 to +287
if (map->via.map.size == 0) {
return FLB_FALSE;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Clear stale write_op on empty metadata maps

In a bulk payload where a delete metadata line is followed by an empty map, the delete branch frees write_op but leaves the caller's variable non-NULL before goto proceed; this new early return leaves out_write_op untouched, so the caller's else path calls flb_sds_destroy(write_op) again on the stale pointer. Please clear *out_write_op (and the size) before returning false, or otherwise ensure the caller does not reuse a previously freed value.

Useful? React with 👍 / 👎.

@cosmo0920 cosmo0920 merged commit b62827d into 4.2 Jun 3, 2026
25 checks passed
@cosmo0920 cosmo0920 deleted the fix/elasticsearch-empty-map-oob-4.2 branch June 3, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant