build fixes: out_stackdriver int64_t line var, gzip endian-safe magic check - #12045
Merged
Conversation
On 32-bit targets (arm/v7) 'long' is 32-bit while int64_t is 'long long', so passing &source_location_line to extract_source_location() failed to compile with -Wincompatible-pointer-types. Declare the variable as int64_t to match the function signature on all architectures. Signed-off-by: Eduardo Silva <eduardo@chronosphere.io> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe PR changes the Stackdriver output plugin’s source line variable type and updates gzip header magic-byte validation to decode the stored value as little-endian before comparison. ChangesStackdriver Source Location Type Fix
Gzip Header Magic-Byte Decode
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
The gzip header magic was memcpy'd into a uint16_t and compared against 0x8B1F, which only holds on little endian hosts. On big endian targets (s390x) a valid stream was rejected with 'invalid magic bytes : 1f8b'. Read the field with read_le16() so the comparison works regardless of host byte order. Signed-off-by: Eduardo Silva <eduardo@chronosphere.io> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two build/CI fixes found while investigating the failed v5.0.9 staging build (https://github.com/fluent/fluent-bit/actions/runs/28693445706/job/85098879153):
1. out_stackdriver: use int64_t for source_location_line
On 32-bit targets (arm/v7)
longis 32-bit whileint64_tislong long, sostackdriver_format()failed to compile when passing&source_location_linetoextract_source_location(), which expectsint64_t *:Declare the variable as
int64_tto match the function signature on all architectures.2. gzip: read magic number endian-safely in streaming decompressor
Found via the s390x unit-test job on this PR: the gzip header magic was
memcpy'd into auint16_tand compared against0x8B1F, which only holds on little-endian hosts. On big-endian targets a valid stream was rejected withinvalid magic bytes : 1f8b. Read the field withread_le16()so the comparison works regardless of host byte order.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:
If this is a change to packaging of containers or native binaries then please confirm it works for all targets.
ok-package-testlabel to test for all targets (requires maintainer to do).Documentation
Backporting
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.
🤖 Generated with Claude Code
Summary by CodeRabbit