Skip to content

Commit 3ff319b

Browse files
Missing memory presence check (#10213)
* Call lastFrame.getMemory().isPresent() before calling lastFrame.getMemory().get().length to avoid NPE Signed-off-by: daniellehrner <daniel.lehrner@consensys.net> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 057dcb3 commit 3ff319b

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

ethereum/core/src/main/java/org/hyperledger/besu/ethereum/vm/DebugOperationTracer.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,13 @@ private Optional<Map<UInt256, UInt256>> captureStorage(final MessageFrame frame)
245245
private Optional<Bytes[]> captureMemory(final MessageFrame frame) {
246246
if (!options.traceMemory() || frame.memoryWordSize() == 0) {
247247
return Optional.empty();
248-
} else if (frame.getMaybeUpdatedMemory().isEmpty()
249-
&& lastFrame != null
250-
&& lastFrame.getDepth() == frame.getDepth()
251-
&& lastFrame.getMemory().get().length == frame.memoryWordSize()) {
252-
return lastFrame.getMemory();
248+
} else if (frame.getMaybeUpdatedMemory().isEmpty() && lastFrame != null) {
249+
final Optional<Bytes[]> lastMemory = lastFrame.getMemory();
250+
if (lastFrame.getDepth() == frame.getDepth()
251+
&& lastMemory.isPresent()
252+
&& lastMemory.get().length == frame.memoryWordSize()) {
253+
return lastMemory;
254+
}
253255
}
254256
return forceCaptureMem(frame);
255257
}

0 commit comments

Comments
 (0)