mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2025-02-17 03:32: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})}",
|
||||
m -> "[" + Integer.parseInt(m.group(1)) + "]");
|
||||
|
||||
packet = replaceAll(packet, "\\{s:\"(([^\"]|(\\\\\"))*)\"}",
|
||||
m -> {
|
||||
String match = m.group(1).replace("\\\"", "\"");
|
||||
return toString(new HPacket(0, match).readBytes(match.length() + 2, 6));
|
||||
});
|
||||
// results in regex stackoverflow for long strings
|
||||
// packet = replaceAll(packet, "\\{s:\"(([^\"]|(\\\\\"))*)\"}",
|
||||
// m -> {
|
||||
// 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("}")) {
|
||||
throw new InvalidPacketException();
|
||||
|
@ -27,7 +27,7 @@ public class InjectionController extends SubForm {
|
||||
inputPacket.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||
}
|
||||
|
||||
private boolean isPacketIncomplete(String line) {
|
||||
private static boolean isPacketIncomplete(String line) {
|
||||
boolean unmatchedBrace = false;
|
||||
|
||||
boolean ignoreBrace = false;
|
||||
@ -51,7 +51,7 @@ public class InjectionController extends SubForm {
|
||||
return unmatchedBrace;
|
||||
}
|
||||
|
||||
private HPacket[] parsePackets(String fullText) {
|
||||
private static HPacket[] parsePackets(String fullText) {
|
||||
LinkedList<HPacket> packets = new LinkedList<>();
|
||||
String[] lines = fullText.split("\n");
|
||||
|
||||
@ -133,4 +133,12 @@ public class InjectionController extends SubForm {
|
||||
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