Skip to content

Commit 8fe2aec

Browse files
authored
Merge pull request #45 from danielga/fix-bad-readbits-and-bytes
Fix bad length ReadBits/Bytes
2 parents a9346c1 + f232c5d commit 8fe2aec

File tree

1 file changed

+65
-32
lines changed

1 file changed

+65
-32
lines changed

sourcenet/netmessages.lua

Lines changed: 65 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,10 @@ NET_MESSAGES = {
176176
local bits = read:ReadWord()
177177
write:WriteWord(bits)
178178

179-
local data = read:ReadBits(bits)
180-
write:WriteBits(data)
179+
if bits > 0 then
180+
local data = read:ReadBits(bits)
181+
write:WriteBits(data)
182+
end
181183

182184
SourceNetMsg(string.format("clc_Move %i,%i,%i\n", new, backup, bits))
183185
end
@@ -190,8 +192,10 @@ NET_MESSAGES = {
190192
local bits = read:ReadWord()
191193
write:WriteWord(bits)
192194

193-
local data = read:ReadBits(bits)
194-
write:WriteBits(data)
195+
if bits > 0 then
196+
local data = read:ReadBits(bits)
197+
write:WriteBits(data)
198+
end
195199

196200
SourceNetMsg(string.format("clc_VoiceData %i\n", bits))
197201
end
@@ -281,8 +285,10 @@ NET_MESSAGES = {
281285
local length = read:ReadLong()
282286
write:WriteLong(length)
283287

284-
local keyvalues = read:ReadBits(length * 8)
285-
write:WriteBits(keyvalues)
288+
if length > 0 then
289+
local keyvalues = read:ReadBytes(length)
290+
write:WriteBits(keyvalues)
291+
end
286292

287293
SourceNetMsg(string.format("clc_CmdKeyValues %i\n", length))
288294
end
@@ -471,8 +477,10 @@ NET_MESSAGES = {
471477
local bits = read:ReadShort()
472478
write:WriteShort(bits)
473479

474-
local data = read:ReadBits(bits)
475-
write:WriteBits(data)
480+
if bits > 0 then
481+
local data = read:ReadBits(bits)
482+
write:WriteBits(data)
483+
end
476484

477485
SourceNetMsg(string.format("svc_SendTable %i,%i\n", encoded, bits))
478486
end
@@ -578,8 +586,10 @@ NET_MESSAGES = {
578586
local bits = read:ReadUInt(20)
579587
write:WriteUInt(bits, 20)
580588

581-
local data = read:ReadBits(bits)
582-
write:WriteBits(data)
589+
if bits > 0 then
590+
local data = read:ReadBits(bits)
591+
write:WriteBits(data)
592+
end
583593

584594
SourceNetMsg(string.format("svc_UpdateStringTable tableid=%i,morechanged=%i,changed=%i,bits=%i\n", tableid, morechanged, changed, bits))
585595
end
@@ -612,8 +622,10 @@ NET_MESSAGES = {
612622
local bits = read:ReadWord()
613623
write:WriteWord(bits)
614624

615-
local voicedata = read:ReadBits(bits)
616-
write:WriteBits(voicedata)
625+
if bits > 0 then
626+
local voicedata = read:ReadBits(bits)
627+
write:WriteBits(voicedata)
628+
end
617629

618630
SourceNetMsg(string.format("svc_VoiceData client=%i,proximity=%i,bits=%i\n", client, proximity, bits))
619631
end
@@ -642,8 +654,11 @@ NET_MESSAGES = {
642654
write:WriteUInt(bits, 8)
643655
end
644656

645-
local data = read:ReadBits(bits)
646-
write:WriteBits(data)
657+
658+
if bits > 0 then
659+
local data = read:ReadBits(bits)
660+
write:WriteBits(data)
661+
end
647662

648663
SourceNetMsg(string.format("svc_Sounds reliable=%i,num=%i,bits=%i\n", reliable, num, bits))
649664
end
@@ -763,8 +778,10 @@ NET_MESSAGES = {
763778
local bits = read:ReadUInt(MAX_ENTITYMESSAGE_BITS)
764779
write:WriteUInt(bits, MAX_ENTITYMESSAGE_BITS)
765780

766-
local data = read:ReadBits(bits)
767-
write:WriteBits(data)
781+
if bits > 0 then
782+
local data = read:ReadBits(bits)
783+
write:WriteBits(data)
784+
end
768785

769786
SourceNetMsg(string.format("svc_EntityMessage entity=%i,class=%i,bits=%i\n", entity, class, bits))
770787
end
@@ -777,8 +794,10 @@ NET_MESSAGES = {
777794
local bits = read:ReadUInt(11)
778795
write:WriteUInt(bits, 11)
779796

780-
local data = read:ReadBits(bits)
781-
write:WriteBits(data)
797+
if bits > 0 then
798+
local data = read:ReadBits(bits)
799+
write:WriteBits(data)
800+
end
782801

783802
SourceNetMsg(string.format("svc_GameEvent bits=%i\n", bits))
784803
end
@@ -813,8 +832,10 @@ NET_MESSAGES = {
813832
local updatebaseline = read:ReadBit()
814833
write:WriteBit(updatebaseline)
815834

816-
local data = read:ReadBits(bits)
817-
write:WriteBits(data)
835+
if bits > 0 then
836+
local data = read:ReadBits(bits)
837+
write:WriteBits(data)
838+
end
818839

819840
SourceNetMsg(string.format("svc_PacketEntities %i,%i,%i,%i,%i,%i,%i\n", max, isdelta, delta, baseline, changed, bits, updatebaseline))
820841
end
@@ -833,8 +854,10 @@ NET_MESSAGES = {
833854
local bits = read:ReadVarInt32()
834855
write:WriteVarInt32(bits)
835856

836-
local data = read:ReadBits(bits)
837-
write:WriteBits(data)
857+
if bits > 0 then
858+
local data = read:ReadBits(bits)
859+
write:WriteBits(data)
860+
end
838861

839862
SourceNetMsg(string.format("svc_TempEntities %i,%i\n", num, bits))
840863
end
@@ -861,8 +884,10 @@ NET_MESSAGES = {
861884
local bytes = read:ReadWord()
862885
write:WriteWord(bytes)
863886

864-
local data = read:ReadBytes(bytes)
865-
write:WriteBytes(data, bytes)
887+
if bytes > 0 then
888+
local data = read:ReadBytes(bytes)
889+
write:WriteBytes(data, bytes)
890+
end
866891

867892
SourceNetMsg(string.format("svc_Menu menutype=%i,bytes=%i\n", menutype, bytes))
868893
end
@@ -878,8 +903,10 @@ NET_MESSAGES = {
878903
local bits = read:ReadUInt(20)
879904
write:WriteUInt(bits, 20)
880905

881-
local data = read:ReadBits(bits)
882-
write:WriteBits(data)
906+
if bits > 0 then
907+
local data = read:ReadBits(bits)
908+
write:WriteBits(data)
909+
end
883910

884911
SourceNetMsg(string.format("svc_GameEventList num=%i,bits=%i\n", num, bits))
885912
end
@@ -906,8 +933,10 @@ NET_MESSAGES = {
906933
local length = read:ReadLong()
907934
write:WriteLong(length)
908935

909-
local keyvalues = read:ReadBits(length * 8)
910-
write:WriteBits(keyvalues)
936+
if length > 0 then
937+
local keyvalues = read:ReadBytes(length)
938+
write:WriteBits(keyvalues)
939+
end
911940

912941
SourceNetMsg(string.format("svc_CmdKeyValues length=%i\n", length))
913942
end
@@ -942,8 +971,10 @@ NET_MESSAGES = {
942971
local length = read:ReadUInt(32)
943972
write:WriteUInt(length)
944973

945-
local data = read:ReadBytes(length)
946-
write:WriteBytes(data)
974+
if length > 0 then
975+
local data = read:ReadBytes(length)
976+
write:WriteBytes(data)
977+
end
947978

948979
SourceNetMsg(string.format("svc_GMod_ServerToClient auto-refresh length=%i,path=%s\n", length, path))
949980
elseif msgtype == 3 then
@@ -952,8 +983,10 @@ NET_MESSAGES = {
952983
local length = read:ReadUInt(16)
953984
write:WriteUInt(length, 16)
954985

955-
local data = read:ReadBytes(length)
956-
write:WriteBytes(data)
986+
if length > 0 then
987+
local data = read:ReadBytes(length)
988+
write:WriteBytes(data)
989+
end
957990

958991
SourceNetMsg(string.format("svc_GMod_ServerToClient GModDataPack::UpdateFile length=%i\n", length))
959992
end

0 commit comments

Comments
 (0)