diff --git a/docs/changelog/127527.yaml b/docs/changelog/127527.yaml new file mode 100644 index 0000000000000..6e1d3e363c3bb --- /dev/null +++ b/docs/changelog/127527.yaml @@ -0,0 +1,5 @@ +pr: 127527 +summary: "No, line noise isn't a valid ip" +area: ES|QL +type: bug +issues: [] diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java index cba986f7e4533..76ab9f90f5501 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java @@ -212,14 +212,14 @@ public static BytesRef leadingZerosAreOctal( } private static int digit(BytesRef string, int offset) { - if (string.bytes[offset] < '0' && '9' < string.bytes[offset]) { + if (string.bytes[offset] < '0' || '9' < string.bytes[offset]) { throw invalid(string); } return string.bytes[offset] - '0'; } private static int octalDigit(BytesRef string, int offset) { - if (string.bytes[offset] < '0' && '7' < string.bytes[offset]) { + if (string.bytes[offset] < '0' || '7' < string.bytes[offset]) { throw invalid(string); } return string.bytes[offset] - '0'; diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java index fab3bc79cda54..5a787d886f584 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java @@ -43,6 +43,23 @@ public static Iterable parameters() { new TestCase("255.0", false, false, false), new TestCase("255.255.1", false, false, false), new TestCase("255.255.0", false, false, false), + new TestCase("a.a.a.a", false, false, false), + new TestCase( + /* + * At some point the ip parsing code parsed this as a valid ipv4 address. Use git-blame if you + * are curious. It was a dark time. + */ + "\u0007I\u001B|R\u0017t)Q W+\u001F5\n" + + "(\u001E~H@u9Sbc~2\u000BH=\tNZ_vSUnv/GL=5Ag2n\u0012 P\u0007?dyA,=~F!\u001C0\fQ\u0011\u0012.5() { @Override public String get() {