Skip to content

Commit 9ec1141

Browse files
author
Andrey Sidorov
committed
fix serialization issues
1 parent ebc0bcb commit 9ec1141

File tree

6 files changed

+16
-12
lines changed

6 files changed

+16
-12
lines changed

lib/packets/change_user.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ ChangeUser.prototype.serializeToBuffer = function (buffer)
5656
packet.writeInt16(this.charsetNumber);
5757

5858
if (isSet('PLUGIN_AUTH')) {
59-
packet.writeNullTerminatedString('mysql_native_password');
59+
packet.writeNullTerminatedString('mysql_native_password', 'latin1');
6060
}
6161

6262
if (isSet('CONNECT_ATTRS')) {

lib/packets/column_definition.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ ColumnDefinition.toPacket = function (column, sequenceId)
101101
{
102102
var length = 17; // = 4 padding + 1 + 12 for the rest
103103
fields.forEach(function (field) {
104-
length += Packet.lengthCodedStringLength(column[field]);
104+
length += Packet.lengthCodedStringLength(column[field], this.characterSet);
105105
});
106106

107107
var buffer = Buffer.allocUnsafe(length);
108108

109109
function writeField (name) {
110-
packet.writeLengthCodedString(column[name]);
110+
packet.writeLengthCodedString(column[name], this.characterSet);
111111
}
112112
var packet = new Packet(sequenceId, buffer, 0, length);
113113
packet.offset = 4;

lib/packets/handshake.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Handshake.prototype.toPacket = function (sequenceId) {
6161
packet = new Packet(sequenceId, buffer, 0, length + 4);
6262
packet.offset = 4;
6363
packet.writeInt8(this.protocolVersion);
64-
packet.writeString(this.serverVersion);
64+
packet.writeString(this.serverVersion, 'cesu8');
6565
packet.writeInt8(0);
6666
packet.writeInt32(this.connectionId);
6767
packet.writeBuffer(this.authPluginData1);
@@ -74,7 +74,7 @@ Handshake.prototype.toPacket = function (sequenceId) {
7474
packet.skip(10);
7575
packet.writeBuffer(this.authPluginData2);
7676
packet.writeInt8(0);
77-
packet.writeString('mysql_native_password');
77+
packet.writeString('mysql_native_password', 'latin1');
7878
packet.writeInt8(0);
7979
return packet;
8080
};

lib/packets/handshake_response.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ HandshakeResponse.prototype.serializeResponse = function (buffer) {
101101
}
102102
if (isSet('PLUGIN_AUTH')) {
103103
// TODO: pass from config
104-
packet.writeNullTerminatedString('mysql_native_password');
104+
packet.writeNullTerminatedString('mysql_native_password', 'latin1');
105105
}
106106
if (isSet('CONNECT_ATTRS')) {
107107
var connectAttributes = this.connectAttributes || {};

lib/packets/packet.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,8 @@ Packet.prototype.writeNull = function () {
726726
// TODO: refactor following three?
727727
Packet.prototype.writeNullTerminatedString = function (s, encoding) {
728728
var buf = StringParser.encode(s, encoding);
729-
this.offset += buf.copy(this.buffer, this.offset);
729+
buf.copy(this.buffer, this.offset);
730+
this.offset += buf.length;
730731
this.writeInt8(0);
731732
};
732733

@@ -746,19 +747,22 @@ Packet.prototype.writeString = function (s, encoding) {
746747
// this.offset += bytes;
747748

748749
var buf = StringParser.encode(s, encoding);
749-
this.offset += buf.copy(this.buffer, this.offset);
750+
buf.copy(this.buffer, this.offset);
751+
this.offset += buf.length;
750752
};
751753

752754
Packet.prototype.writeLengthCodedString = function (s, encoding) {
755+
console.log('writeLengthCodedString ', s, encoding);
753756
var buf = StringParser.encode(s, encoding);
754757
this.writeLengthCodedNumber(buf.length);
755-
this.offset += buf.copy(this.buffer, this.offset);
758+
buf.copy(this.buffer, this.offset);
759+
this.offset += buf.lengh;
756760
};
757761

758762
Packet.prototype.writeLengthCodedBuffer = function (b) {
759763
this.writeLengthCodedNumber(b.length);
760-
b.copy(this.buffer, this.offset);
761764
this.offset += b.length;
765+
b.copy(this.buffer, this.offset);
762766
};
763767

764768
Packet.prototype.writeLengthCodedNumber = function (n) {

test/unit/packets/test-datetime.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ buf = Buffer.from('18000006000004666f6f310be00702090f01095d7f06000462617231', 'h
1414
packet = new packets.Packet(6, buf, 0, buf.length);
1515

1616
i = packet.readInt16();
17-
var s = packet.readLengthCodedString();
17+
var s = packet.readLengthCodedString('cesu8');
1818
assert.equal(s, 'foo1');
1919
d = packet.readDateTime();
2020
assert.equal(+d, 1455030494821);
2121

22-
var s1 = packet.readLengthCodedString();
22+
var s1 = packet.readLengthCodedString('cesu8');
2323
assert.equal(s1, 'bar1');
2424
assert.equal(packet.offset, packet.end);

0 commit comments

Comments
 (0)