forked from open-telemetry/opentelemetry-collector-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[pkg/stanza] Fix issue where syslog octet parsing could truncate token (
open-telemetry#27294) This fixes a bug detected while attempting to migrate test to the new `splittest` framework. Generally speaking, the responsibility of a `bufio.SplitFunc` is to parse a token from a given buffer (`[]byte`). However, the split func does not have control over the size of the buffer, so it must be able to ask for more data. The mechanism for asking for more data is to return `0, nil, nil`. A split func is also told whether there is any more data to read. This allows it to chose whether to "give up" and return a truncated token, or to insist that it will wait until there is more data (which may never happen). This particular function is parsing tokens based on a simple numerical prefix which indicates how long the token will be. e.g. `54 This is the actual token and it is 54 characters long.` The problem is that the function would give up prematurely and return a truncated token. The proper behavior is to ask for more data _unless_ the function is specifically told that there is no more data to receive. This fixes the behavior so that whenever we are able to parse an expected length but find there is not enough data in the buffer to fulfill the expectation, we ask for more data. It only returns a truncated token when there is no more data to ask for.
- Loading branch information
1 parent
3592b5c
commit 80ea4ce
Showing
3 changed files
with
41 additions
and
17 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Use this changelog template to create an entry for release notes. | ||
|
||
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' | ||
change_type: bug_fix | ||
|
||
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) | ||
component: syslogreceiver | ||
|
||
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). | ||
note: Fix issue where long tokens would be truncated prematurely | ||
|
||
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. | ||
issues: [27294] | ||
|
||
# (Optional) One or more lines of additional information to render under the primary note. | ||
# These lines will be padded with 2 spaces and then inserted directly into the document. | ||
# Use pipe (|) for multiline entries. | ||
subtext: | ||
|
||
# If your change doesn't affect end users or the exported elements of any package, | ||
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. | ||
# Optional: The change log or logs in which this entry should be included. | ||
# e.g. '[user]' or '[user, api]' | ||
# Include 'user' if the change is relevant to end users. | ||
# Include 'api' if there is a change to a library API. | ||
# Default: '[user]' | ||
change_logs: [] |
This file contains 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
This file contains 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