-
Notifications
You must be signed in to change notification settings - Fork 144
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
BigUint::from_str_radix panics with invalid string containing "+" #268
Comments
cuviper
added a commit
to cuviper/num
that referenced
this issue
Mar 6, 2017
If a `+` is encountered in the middle of parsing a BigUint, this should generate an `ParseIntError::InvalidDigit`. Since we can't create that directly, we get it by trying to parse a `u64` from this point, but of course `+` is a perfectly valid prefix to a `u64`. Now we include the previous character in the string passed to `u64`, so it has proper parsing context to understand what's in error. Fixes rust-num#268.
homu
added a commit
that referenced
this issue
Mar 8, 2017
bigint: Create the parsing error better for nested `+` If a `+` is encountered in the middle of parsing a BigUint, this should generate an `ParseIntError::InvalidDigit`. Since we can't create that directly, we get it by trying to parse a `u64` from this point, but of course `+` is a perfectly valid prefix to a `u64`. Now we include the previous character in the string passed to `u64`, so it has proper parsing context to understand what's in error. Fixes #268.
Thanks, reports like this are welcome! This is now fixed and published in |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Test case:
will panic instead of returning an Err:
Cause is that
num
tries to create andunwrap_err
a ParseIntError fromstd
by callingparse
ons[i..]
wherei
is the index of the+
. This will not error out if there are only valid digits after the+
.@Manishearth for the trophy case - found by using cargo-fuzz on serde-pickle
The text was updated successfully, but these errors were encountered: