mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2025-02-19 20:42:36 +01:00
fix regex overflow
This commit is contained in:
parent
a56b98696f
commit
64c6f35b2f
@ -51,11 +51,29 @@ public class PacketStringUtils {
|
|||||||
packet = replaceAll(packet, "\\{b:([0-9]{1,3})}",
|
packet = replaceAll(packet, "\\{b:([0-9]{1,3})}",
|
||||||
m -> "[" + Integer.parseInt(m.group(1)) + "]");
|
m -> "[" + Integer.parseInt(m.group(1)) + "]");
|
||||||
|
|
||||||
packet = replaceAll(packet, "\\{s:\"(([^\"]|(\\\\\"))*)\"}",
|
// results in regex stackoverflow for long strings
|
||||||
m -> {
|
// packet = replaceAll(packet, "\\{s:\"(([^\"]|(\\\\\"))*)\"}",
|
||||||
String match = m.group(1).replace("\\\"", "\"");
|
// m -> {
|
||||||
return toString(new HPacket(0, match).readBytes(match.length() + 2, 6));
|
// String match = m.group(1).replace("\\\"", "\"");
|
||||||
});
|
// return toString(new HPacket(0, match).readBytes(match.length() + 2, 6));
|
||||||
|
// });
|
||||||
|
|
||||||
|
while (packet.contains("{s:\"")) {
|
||||||
|
int start = packet.indexOf("{s:\"");
|
||||||
|
int end = packet.indexOf("\"}");
|
||||||
|
while (end != -1 && packet.charAt(end - 1) == '\\') {
|
||||||
|
end = packet.indexOf("\"}", end + 1);
|
||||||
|
}
|
||||||
|
if (end == -1) {
|
||||||
|
throw new InvalidPacketException();
|
||||||
|
}
|
||||||
|
|
||||||
|
String match = packet.substring(start + 4, end).replace("\\\"", "\"");;
|
||||||
|
packet = packet.substring(0, start) +
|
||||||
|
toString(new HPacket(0, match).readBytes(match.length() + 2, 6)) +
|
||||||
|
packet.substring(end + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (packet.contains("{") || packet.contains("}")) {
|
if (packet.contains("{") || packet.contains("}")) {
|
||||||
throw new InvalidPacketException();
|
throw new InvalidPacketException();
|
||||||
|
@ -27,7 +27,7 @@ public class InjectionController extends SubForm {
|
|||||||
inputPacket.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
inputPacket.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPacketIncomplete(String line) {
|
private static boolean isPacketIncomplete(String line) {
|
||||||
boolean unmatchedBrace = false;
|
boolean unmatchedBrace = false;
|
||||||
|
|
||||||
boolean ignoreBrace = false;
|
boolean ignoreBrace = false;
|
||||||
@ -51,7 +51,7 @@ public class InjectionController extends SubForm {
|
|||||||
return unmatchedBrace;
|
return unmatchedBrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
private HPacket[] parsePackets(String fullText) {
|
private static HPacket[] parsePackets(String fullText) {
|
||||||
LinkedList<HPacket> packets = new LinkedList<>();
|
LinkedList<HPacket> packets = new LinkedList<>();
|
||||||
String[] lines = fullText.split("\n");
|
String[] lines = fullText.split("\n");
|
||||||
|
|
||||||
@ -133,4 +133,12 @@ public class InjectionController extends SubForm {
|
|||||||
writeToLog(Color.RED, "CS -> packet with id: " + packet.headerId());
|
writeToLog(Color.RED, "CS -> packet with id: " + packet.headerId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
HPacket[] packets = parsePackets("{l}{u:3}{i:967585}{i:9589}{s:\"furni_inscriptionfuckfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\"}{s:\"sirjonasxx-II\"}{s:\"\"}{i:188}{i:0}{i:0}{b:false}");
|
||||||
|
System.out.println(new HPacket("{l}{u:2550}{s:\"ClientPerf\"\"ormance\\\"}\"}{s:\"23\"}{s:\"fps\"}{s:\"Avatars: 1, Objects: 0\"}{i:76970180}").toExpression());
|
||||||
|
|
||||||
|
System.out.println("hi");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user