-
Notifications
You must be signed in to change notification settings - Fork 104
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
Fix validity checks for char
#3853
Merged
Merged
Conversation
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
Ensure value validity checks for `char` in Kani matches the Rust documentation: > A char value must not be a surrogate (i.e., must not be in the range 0xD800..=0xDFFF) and must be equal to or less than char::MAX. The existing code was relying on the compiler ABI information, which can only express one continuous value range for value validity. But `char` is a special case, and the Rust compiler understands the gap in valid `char`. This change makes Kani compiler aware of this gap too.
zhassan-aws
approved these changes
Jan 25, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! This has been a longstanding issue. Thanks!
github-merge-queue bot
pushed a commit
that referenced
this pull request
Feb 6, 2025
Github generated release notes: ## What's Changed * Automatic toolchain upgrade to nightly-2025-01-08 by @github-actions in #3821 * Automatic cargo update to 2025-01-13 by @github-actions in #3824 * Automatic toolchain upgrade to nightly-2025-01-09 by @github-actions in #3825 * Bump ncipollo/release-action from 1.14.0 to 1.15.0 by @dependabot in #3826 * Bump tests/perf/s2n-quic from `ac52a48` to `adc7ba9` by @dependabot in #3827 * Automatic toolchain upgrade to nightly-2025-01-10 by @github-actions in #3828 * Automatic toolchain upgrade to nightly-2025-01-11 by @github-actions in #3830 * Verify contracts/stubs for generic types with multiple inherent implementations by @carolynzech in #3829 * Update Charon submodule by @thanhnguyen-aws in #3823 * Automatic toolchain upgrade to nightly-2025-01-12 by @github-actions in #3831 * Automatic toolchain upgrade to nightly-2025-01-13 by @github-actions in #3833 * Upgrade toolchain to 2025-01-15 by @tautschnig in #3835 * Automatic toolchain upgrade to nightly-2025-01-16 by @github-actions in #3836 * Add a regression test for `no_std` feature by @carolynzech in #3837 * Use fully-qualified name for size_of by @zhassan-aws in #3838 * Automatic cargo update to 2025-01-20 by @github-actions in #3842 * Bump tests/perf/s2n-quic from `adc7ba9` to `f0649f9` by @dependabot in #3844 * Upgrade toolchain to nightly-2025-01-22 by @tautschnig in #3843 * Remove `DefKind::Ctor` from filtering crate items by @carolynzech in #3845 * Enable valid_ptr post_condition harnesses by @tautschnig in #3847 * Update build command in docs to use release mode by @zhassan-aws in #3846 * Automatic toolchain upgrade to nightly-2025-01-23 by @github-actions in #3848 * Automatic toolchain upgrade to nightly-2025-01-24 by @github-actions in #3850 * Remove the openssl-devel package from dependencies by @zhassan-aws in #3852 * Fix validity checks for `char` by @celinval in #3853 * Bump tests/perf/s2n-quic from `f0649f9` to `4500593` by @dependabot in #3857 * Automatic cargo update to 2025-01-27 by @github-actions in #3856 * Deprecate `--enable-unstable` and `--restrict-vtable` by @celinval in #3859 * Stub linker to avoid missing symbols errors by @celinval in #3858 * Toolchain upgrade to nightly-2025-01-28 by @feliperodri in #3855 * Allow multiple annotations, but check for duplicate targets. by @remi-delmas-3000 in #3808 * Move documentation of kani_core modules to right places by @qinheping in #3851 * Fix missing function declaration issue by @celinval in #3862 * Fix transmute codegen when sizes are different by @celinval in #3861 * Remove symtab2gb from bundle by @zhassan-aws in #3865 * Update the rustc hack for CLion / RustRover by @celinval in #3868 * Bump tests/perf/s2n-quic from `4500593` to `82dd0b5` by @dependabot in #3872 * Automatic cargo update to 2025-02-03 by @github-actions in #3869 * Add reference for loop contracts by @qinheping in #3849 * remove flag float-overflow-check by @rajath-mk in #3873 ## New Contributors * @rajath-mk made their first contribution in #3873 **Full Changelog**: kani-0.58.0...kani-0.59.0 By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses. --------- Co-authored-by: Zyad Hassan <88045115+zhassan-aws@users.noreply.github.com>
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.
Ensure value validity checks for
char
in Kani matches the Rust documentation:The existing code was relying on the compiler ABI information, which can only express one continuous value range for value validity. But
char
is a special case, and the Rust compiler understands the gap in validchar
. This change makes Kani compiler aware of this gap too.Resolves #3241
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.