diff options
author | Andrey Somov <public.somov@gmail.com> | 2022-04-29 14:39:40 +0400 |
---|---|---|
committer | Andrey Somov <public.somov@gmail.com> | 2022-04-29 17:18:33 +0400 |
commit | b00fefc0cf2e025224b012386b489589c65d1773 (patch) | |
tree | c77887699b4b65255db83196cd6b6bb7018e536f /src/main | |
parent | f3ab4e0f54c37ddb10f00b71d04187bb0ef1799c (diff) | |
parent | 3d82e84ddcdeb2007f9504a27abd72d3e4cfa5dd (diff) | |
download | snakeyaml-b00fefc0cf2e025224b012386b489589c65d1773.tar.gz |
Fixes
Diffstat (limited to 'src/main')
3 files changed, 39 insertions, 36 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java index dc92b61d..f38c4e9a 100644 --- a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java +++ b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java @@ -250,7 +250,12 @@ public class SafeConstructor extends BaseConstructor { public class ConstructYamlInt extends AbstractConstruct { @Override public Object construct(Node node) { - String value = constructScalar((ScalarNode) node).toString().replaceAll("_", ""); + String value = constructScalar((ScalarNode) node).replaceAll("_", ""); + if (value.isEmpty()) { + throw new ConstructorException("while constructing an int", + node.getStartMark(), "found empty value", + node.getStartMark()); + } int sign = +1; char first = value.charAt(0); if (first == '-') { diff --git a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java index 0ff170d5..9c0d32fb 100644 --- a/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java +++ b/src/main/java/org/yaml/snakeyaml/resolver/Resolver.java @@ -69,16 +69,14 @@ public class Resolver { * matches INT (see issue 130) * http://code.google.com/p/snakeyaml/issues/detail?id=130 */ - addImplicitResolver(Tag.INT, INT, "-+0123456789", 100); - addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789.", 100); - addImplicitResolver(Tag.MERGE, MERGE, "<", 100); + addImplicitResolver(Tag.INT, INT, "-+0123456789"); + addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789."); + addImplicitResolver(Tag.MERGE, MERGE, "<", 10); addImplicitResolver(Tag.NULL, NULL, "~nN\0", 10); addImplicitResolver(Tag.NULL, EMPTY, null, 10); addImplicitResolver(Tag.TIMESTAMP, TIMESTAMP, "0123456789", 50); - // The following implicit resolver is only for documentation - // purposes. - // It cannot work - // because plain scalars cannot start with '!', '&', or '*'. + // The following implicit resolver is only for documentation purposes. + // It cannot work because plain scalars cannot start with '!', '&', or '*'. addImplicitResolver(Tag.YAML, YAML, "!&*", 10); } @@ -127,7 +125,7 @@ public class Resolver { for (ResolverTuple v : resolvers) { Tag tag = v.getTag(); Pattern regexp = v.getRegexp(); - if (value.length() < v.getLimit() && regexp.matcher(value).matches()) { + if (value.length() <= v.getLimit() && regexp.matcher(value).matches()) { return tag; } } diff --git a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java index ebdce019..d86a4bf8 100644 --- a/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java +++ b/src/main/java/org/yaml/snakeyaml/resolver/ResolverTuple.java @@ -16,34 +16,34 @@ package org.yaml.snakeyaml.resolver; import java.util.regex.Pattern; - import org.yaml.snakeyaml.nodes.Tag; final class ResolverTuple { - private final Tag tag; - private final Pattern regexp; - private final int limit; - - public ResolverTuple(Tag tag, Pattern regexp, int limit) { - this.tag = tag; - this.regexp = regexp; - this.limit = limit; - } - - public Tag getTag() { - return tag; - } - - public Pattern getRegexp() { - return regexp; - } - - public int getLimit() { - return limit; - } - - @Override - public String toString() { - return "Tuple tag=" + tag + " regexp=" + regexp; - } + + private final Tag tag; + private final Pattern regexp; + private final int limit; + + public ResolverTuple(Tag tag, Pattern regexp, int limit) { + this.tag = tag; + this.regexp = regexp; + this.limit = limit; + } + + public Tag getTag() { + return tag; + } + + public Pattern getRegexp() { + return regexp; + } + + public int getLimit() { + return limit; + } + + @Override + public String toString() { + return "Tuple tag=" + tag + " regexp=" + regexp + " limit=" + limit; + } }
\ No newline at end of file |