Escape NUL bytes in white diff admin text. - #1726
Merged
Merged
Conversation
NUL is valid UTF-8, so decoding with backslashreplace keeps it as-is. PostgreSQL rejects NUL in text columns, so writing the evaluation fails and EvaluationService retries it forever, leaving the testcase unscored. Escape it as \x00, consistent with how backslashreplace renders invalid bytes, so the admin can still see the difference.
veluca93
approved these changes
Oct 5, 2026
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.
NUL is valid UTF-8, so
backslashreplaceleaves it as-is in the white diffadmin_text. PostgreSQL rejects NUL in text columns, so writing theevaluation fails, and EvaluationService retries it forever, leaving the
testcase unscored. Triggered by a contestant printing a NUL byte on a
mismatching line (e.g. uninitialized memory) in a Batch task with the
built-in diff.
The fix escapes NUL as
\x00instead of stripping it, so the differencestays visible.
Regression from b98e44b, not in any release. Similar to #888. Hit this in
production during an exam.