Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x-pack/filebeat/input/http_endpoint: fix handling of deeply nested numeric values #40115

Merged
merged 1 commit into from
Jul 8, 2024

Conversation

efd6
Copy link
Contributor

@efd6 efd6 commented Jul 5, 2024

Proposed commit message

In order to avoid precision loss during processing of numeric values that cannot be exactly represented in a double-precision floating point value, the json.Number unmarshaller is used. This has the effect that conversion to native types on exit from the CEL program fails since protobuf does not handle json.Number. For non-nested values that are referenced by the CEL runtime, this does not cause an issue since the native-to-value conversion will attempt to convert the string representation of the numeric value. This conversion is not recursively applied.

Recursively apply the type conversion to all child values on referencing a value; converting numeric values to the most exact type and falling back to a string representation if no native numeric representation is possible.

Also add an undocumented debug function equivalent to the debug that is available in the CEL input.


Note that an alternative would be to always convert json.Number to string. I'm happy with that approach as well.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

Disruptive User Impact

Author's Checklist

  • [ ]

How to test this PR locally

Related issues

Use cases

Screenshots

Logs

@efd6 efd6 added Filebeat Filebeat bugfix Team:Security-Service Integrations Security Service Integrations Team backport-8.15 Automated backport to the 8.15 branch with mergify labels Jul 5, 2024
@efd6 efd6 self-assigned this Jul 5, 2024
@botelastic botelastic bot added needs_team Indicates that the issue/PR needs a Team:* label and removed needs_team Indicates that the issue/PR needs a Team:* label labels Jul 5, 2024
@efd6 efd6 force-pushed the http_endpoint_json_number branch 3 times, most recently from 0f63996 to c03b7c5 Compare July 5, 2024 02:54
@efd6 efd6 marked this pull request as ready for review July 5, 2024 04:41
@efd6 efd6 requested a review from a team as a code owner July 5, 2024 04:41
@elasticmachine
Copy link
Collaborator

Pinging @elastic/security-service-integrations (Team:Security-Service Integrations)

…meric values

In order to avoid precision loss during processing of numeric values
that cannot be exactly represented in a double-precision floating point
value, the json.Number unmarshaller is used. This has the effect that
conversion to native types on exit from the CEL program fails since
protobuf does not handle json.Number. For non-nested values that are
referenced by the CEL runtime, this does not caues an issue since the
native-to-value conversion will attempt to convert the string
representation of the numeric value. This conversion is not recursively
applied.

Recursively apply the type conversion to all child values on referencing
a value; converting numeric values to the most exact type and falling
back to a string representation if no native numeric represetation is
possible.

Also add an undocumented debug function equivalent to the debug that is
available in the CEL input and improve error logging.
Copy link
Contributor

@kcreddy kcreddy left a comment

Choose a reason for hiding this comment

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

LGTM

@efd6 efd6 merged commit f0401c6 into elastic:main Jul 8, 2024
19 checks passed
mergify bot pushed a commit that referenced this pull request Jul 8, 2024
…meric values (#40115)

In order to avoid precision loss during processing of numeric values
that cannot be exactly represented in a double-precision floating point
value, the json.Number unmarshaller is used. This has the effect that
conversion to native types on exit from the CEL program fails since
protobuf does not handle json.Number. For non-nested values that are
referenced by the CEL runtime, this does not caues an issue since the
native-to-value conversion will attempt to convert the string
representation of the numeric value. This conversion is not recursively
applied.

Recursively apply the type conversion to all child values on referencing
a value; converting numeric values to the most exact type and falling
back to a string representation if no native numeric represetation is
possible.

Also add an undocumented debug function equivalent to the debug that is
available in the CEL input and improve error logging.

(cherry picked from commit f0401c6)

# Conflicts:
#	x-pack/filebeat/input/http_endpoint/handler.go
mergify bot pushed a commit that referenced this pull request Jul 8, 2024
…meric values (#40115)

In order to avoid precision loss during processing of numeric values
that cannot be exactly represented in a double-precision floating point
value, the json.Number unmarshaller is used. This has the effect that
conversion to native types on exit from the CEL program fails since
protobuf does not handle json.Number. For non-nested values that are
referenced by the CEL runtime, this does not caues an issue since the
native-to-value conversion will attempt to convert the string
representation of the numeric value. This conversion is not recursively
applied.

Recursively apply the type conversion to all child values on referencing
a value; converting numeric values to the most exact type and falling
back to a string representation if no native numeric represetation is
possible.

Also add an undocumented debug function equivalent to the debug that is
available in the CEL input and improve error logging.

(cherry picked from commit f0401c6)
efd6 added a commit that referenced this pull request Jul 8, 2024
…meric values (#40115) (#40134)

In order to avoid precision loss during processing of numeric values
that cannot be exactly represented in a double-precision floating point
value, the json.Number unmarshaller is used. This has the effect that
conversion to native types on exit from the CEL program fails since
protobuf does not handle json.Number. For non-nested values that are
referenced by the CEL runtime, this does not caues an issue since the
native-to-value conversion will attempt to convert the string
representation of the numeric value. This conversion is not recursively
applied.

Recursively apply the type conversion to all child values on referencing
a value; converting numeric values to the most exact type and falling
back to a string representation if no native numeric represetation is
possible.

Also add an undocumented debug function equivalent to the debug that is
available in the CEL input and improve error logging.

(cherry picked from commit f0401c6)

Co-authored-by: Dan Kortschak <[email protected]>
efd6 added a commit that referenced this pull request Jul 8, 2024
…ling of deeply nested numeric values (#40133)

* x-pack/filebeat/input/http_endpoint: fix handling of deeply nested numeric values (#40115)

In order to avoid precision loss during processing of numeric values
that cannot be exactly represented in a double-precision floating point
value, the json.Number unmarshaller is used. This has the effect that
conversion to native types on exit from the CEL program fails since
protobuf does not handle json.Number. For non-nested values that are
referenced by the CEL runtime, this does not caues an issue since the
native-to-value conversion will attempt to convert the string
representation of the numeric value. This conversion is not recursively
applied.

Recursively apply the type conversion to all child values on referencing
a value; converting numeric values to the most exact type and falling
back to a string representation if no native numeric represetation is
possible.

Also add an undocumented debug function equivalent to the debug that is
available in the CEL input and improve error logging.

(cherry picked from commit f0401c6)

# Conflicts:
#	x-pack/filebeat/input/http_endpoint/handler.go

* remove irrelevant changelog entries
* resolve conflicts

---------

Co-authored-by: Dan Kortschak <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-8.15 Automated backport to the 8.15 branch with mergify backport-v8.14.0 Automated backport with mergify bugfix Filebeat Filebeat Team:Security-Service Integrations Security Service Integrations Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants