From 49667272add1963c6937a63898de6881b2e455aa Mon Sep 17 00:00:00 2001 From: Gangzheng Tong Date: Fri, 16 May 2025 20:59:55 -0700 Subject: fix the break to make sure only valid data will be accessed (#7148) --- examples/gpu-printing/gpu-printing.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'examples/gpu-printing/gpu-printing.cpp') diff --git a/examples/gpu-printing/gpu-printing.cpp b/examples/gpu-printing/gpu-printing.cpp index f71578554..a0d5e5919 100644 --- a/examples/gpu-printing/gpu-printing.cpp +++ b/examples/gpu-printing/gpu-printing.cpp @@ -140,8 +140,16 @@ void GPUPrinting::processGPUPrintCommands(const void* data, size_t dataSize) // avoid crashes from a command trying to fetch data past // the end of the buffer. // - if (payloadWordCount > size_t(dataCursor - dataEnd)) + ptrdiff_t wordsAvailable = dataEnd - dataCursor; + if (wordsAvailable < 0 || payloadWordCount > (uint32_t)wordsAvailable) { + fprintf( + stderr, + "error: GPU printing buffer corruption or insufficient data for payload.\n" + " Op: %d, Declared Payload Words: %u, Available Words: %td\n", + (int)op, + payloadWordCount, + (wordsAvailable < 0 ? 0 : wordsAvailable)); break; } // -- cgit v1.2.3