Skip to content

Commit 0a26247

Browse files
authored
Don't expose underlying replay data buffer (#263)
1 parent 53532b5 commit 0a26247

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

data/src/main/java/com/faforever/commons/replay/ReplayDataParser.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ public class ReplayDataParser {
4444
private ReplayMetadata metadata;
4545
@Getter
4646
private String replayPatchFieldId;
47-
@Getter
48-
private ByteBuffer data;
47+
private ByteBuffer dataBuffer;
4948
@Getter
5049
private String map;
5150
@Getter
@@ -136,7 +135,7 @@ private void readReplayData(Path replayFile) throws IOException, CompressorExcep
136135
buffer.limit(buffer.capacity());
137136

138137
buffer.position(headerEnd + 1);
139-
data = decompress(buffer, metadata);
138+
dataBuffer = decompress(buffer, metadata);
140139
}
141140

142141
private int findReplayHeaderEnd(byte[] replayData) {
@@ -442,15 +441,20 @@ private Duration tickToTime(int tick) {
442441

443442
private void parse() throws IOException, CompressorException {
444443
readReplayData(path);
445-
data.order(ByteOrder.LITTLE_ENDIAN);
444+
dataBuffer.order(ByteOrder.LITTLE_ENDIAN);
446445

447-
parseHeader(data);
446+
parseHeader(dataBuffer);
448447

449-
var rewindPosition = data.position();
450-
tokens = ReplayBodyTokenizer.tokenize(data);
451-
data.position(rewindPosition);
448+
var rewindPosition = dataBuffer.position();
449+
tokens = ReplayBodyTokenizer.tokenize(dataBuffer);
450+
dataBuffer.position(rewindPosition);
452451

453-
events = ReplayBodyParser.parseTokens(tokens, data);
452+
events = ReplayBodyParser.parseTokens(tokens, dataBuffer);
454453
interpretEvents(events);
455454
}
455+
456+
public byte[] getRawReplayData() {
457+
byte[] backingArray = dataBuffer.array();
458+
return Arrays.copyOf(backingArray, backingArray.length);
459+
}
456460
}

data/src/test/java/com/faforever/commons/replay/ReplayLoaderTableParserTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public void testReferenceZstd() throws Exception {
108108
Files.copy(getClass().getResourceAsStream("/replay/zstd_reference.fafreplay"), replayFile);
109109
Files.copy(getClass().getResourceAsStream("/replay/zstd_reference.raw"), referenceFile);
110110

111-
byte[] data = new ReplayDataParser(replayFile, objectMapper).getData().array();
111+
byte[] data = new ReplayDataParser(replayFile, objectMapper).getRawReplayData();
112112
byte[] reference = Files.readAllBytes(referenceFile);
113113
assertThat("Zstd compressed replay matches reference", Arrays.equals(data, reference));
114114
}
@@ -120,7 +120,7 @@ public void testLegacyFormat() throws Exception {
120120
Files.copy(getClass().getResourceAsStream("/replay/test.fafreplay"), replayFile);
121121
Files.copy(getClass().getResourceAsStream("/replay/test.raw"), referenceFile);
122122

123-
byte[] data = new ReplayDataParser(replayFile, objectMapper).getData().array();
123+
byte[] data = new ReplayDataParser(replayFile, objectMapper).getRawReplayData();
124124
byte[] reference = Files.readAllBytes(referenceFile);
125125
assertThat("Legacy compressed file matches reference", Arrays.equals(data, reference));
126126
}

0 commit comments

Comments
 (0)