Skip to content

Commit 0917087

Browse files
committed
[CONJ-1082] Multiple session system variables parsing fails
1 parent 4381ee2 commit 0917087

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/main/java/org/mariadb/jdbc/message/server/OkPacket.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,21 @@ public OkPacket(ReadableByteBuf buf, Context context) {
3535
if (buf.readableBytes() > 0 && context.hasClientCapability(Capabilities.CLIENT_SESSION_TRACK)) {
3636
buf.skip(buf.readIntLengthEncodedNotNull()); // skip info
3737
while (buf.readableBytes() > 0) {
38-
if (buf.readIntLengthEncodedNotNull() > 0) {
39-
switch (buf.readByte()) {
38+
ReadableByteBuf sessionStateBuf = buf.readLengthBuffer();
39+
while (sessionStateBuf.readableBytes() > 0) {
40+
switch (sessionStateBuf.readByte()) {
4041
case StateChange.SESSION_TRACK_SYSTEM_VARIABLES:
41-
buf.readIntLengthEncodedNotNull();
42-
String variable = buf.readString(buf.readIntLengthEncodedNotNull());
43-
Integer len = buf.readLength();
44-
String value = len == null ? null : buf.readString(len);
42+
ReadableByteBuf tmpBuf2 = sessionStateBuf.readLengthBuffer();
43+
String variable = tmpBuf2.readString(tmpBuf2.readIntLengthEncodedNotNull());
44+
Integer len = tmpBuf2.readLength();
45+
String value = len == null ? null : tmpBuf2.readString(len);
4546
logger.debug("System variable change: {} = {}", variable, value);
4647
break;
4748

4849
case StateChange.SESSION_TRACK_SCHEMA:
49-
buf.readIntLengthEncodedNotNull();
50-
Integer dbLen = buf.readLength();
51-
String database = dbLen == null ? null : buf.readString(dbLen);
50+
sessionStateBuf.readIntLengthEncodedNotNull();
51+
Integer dbLen = sessionStateBuf.readLength();
52+
String database = dbLen == null ? null : sessionStateBuf.readString(dbLen);
5253
context.setDatabase(database.isEmpty() ? null : database);
5354
logger.debug("Database change: is '{}'", database);
5455
break;

0 commit comments

Comments
 (0)