commit 02737d535ac5bda4e9a00ec0ae11ae313065dfbb (tree)
parent 434fce2146a9f1dc096fdae6827e0855799351ca
Author: cryptocode <cryptocode@zolo.io>
Date: Thu, 4 Mar 2021 18:42:56 +0100
Reject bare +/- input when parsing floats
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/std/fmt/parse_float.zig b/lib/std/fmt/parse_float.zig
@@ -339,7 +339,7 @@ fn caseInEql(a: []const u8, b: []const u8) bool {
}
pub fn parseFloat(comptime T: type, s: []const u8) !T {
- if (s.len == 0) {
+ if (s.len == 0 or (s.len == 1 and (s[0] == '+' or s[0] == '-'))) {
return error.InvalidCharacter;
}
@@ -379,6 +379,8 @@ test "fmt.parseFloat" {
testing.expectError(error.InvalidCharacter, parseFloat(T, ""));
testing.expectError(error.InvalidCharacter, parseFloat(T, " 1"));
testing.expectError(error.InvalidCharacter, parseFloat(T, "1abc"));
+ testing.expectError(error.InvalidCharacter, parseFloat(T, "+"));
+ testing.expectError(error.InvalidCharacter, parseFloat(T, "-"));
expectEqual(try parseFloat(T, "0"), 0.0);
expectEqual(try parseFloat(T, "0"), 0.0);