From b75e4b5a1956fcdd29f396d3c1b554ebfbf33053 Mon Sep 17 00:00:00 2001 From: Orange flavored banana <106858113+moonwhistle@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:55:36 +0900 Subject: [PATCH] refactor(jdbc): prevent over-read and infinite loop in setBinaryStream --- .../main/java/tech/turso/jdbc4/JDBC4PreparedStatement.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4PreparedStatement.java b/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4PreparedStatement.java index b0dd39734..7854b7763 100644 --- a/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4PreparedStatement.java +++ b/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4PreparedStatement.java @@ -245,12 +245,10 @@ public final class JDBC4PreparedStatement extends JDBC4Statement implements Prep byte[] buffer = new byte[8192]; int bytesRead; int totalRead = 0; - while ((bytesRead = x.read(buffer, 0, Math.min(buffer.length, length - totalRead))) != -1) { + while (totalRead < length + && (bytesRead = x.read(buffer, 0, Math.min(buffer.length, length - totalRead))) > 0) { baos.write(buffer, 0, bytesRead); totalRead += bytesRead; - if (totalRead >= length) { - break; - } } byte[] data = baos.toByteArray(); this.statement.bindBlob(parameterIndex, data);