fix: crash when parsing invalid json config#52
Merged
Conversation
leoromanovsky
approved these changes
Jan 27, 2026
Comment on lines
+632
to
+633
| result.errors.push_back("ConfigResponse: Expected a JSON object, got " + | ||
| std::string(j.type_name())); |
Member
There was a problem hiding this comment.
consider another log line that prints out the received configuration to give them a totally self service way to iterate; alternatively does this error give them a strong enough signal that they could catch and print it themselves?
Collaborator
Author
There was a problem hiding this comment.
The current error message includes the JSON type name (e.g., "Expected a JSON object, got null" or "got array"), which should give a good signal about what happened. Since parseConfigResponse returns a ParseResult with the error in result.errors, consuming apps can catch and log the full input themselves. So we should be good 👍
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.
Eppo Internal:
🎟️ Fixes FFESUPPORT-458
Summary
Fixes #51 - crash in
parseConfigResponsewhen receiving invalid or non-object JSON input.contains()methodRoot Cause
The
parseConfigResponse(const nlohmann::json& j)function calledj.contains("flags")without first validating thatjis a JSON object. In nlohmann::json, callingcontains()on a non-object type (null, array, number, string, boolean) throws atype_error.306exception, causing theEXCEPTION_ACCESS_VIOLATION_READcrash reported in the issue.This could occur when the backend returns empty, corrupt, or unexpected responses.
Test plan
jsonobject and string"null")jsonobject and string"[]")