Skip to content

Commit 4be85f3

Browse files
committed
Fix compile error with latest Appleclang
It complained about char_traits<unsigned char> being requested somehow. Anyway allowing arbitrarily large sizes is bad in network code, so use a fixed-size buffer instead of the basic_string<byte>.
1 parent bbb4803 commit 4be85f3

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/engine/framework/Network.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,18 @@ void OutOfBandData( netsrc_t sock, const netadr_t& adr, byte *data, std::size_t
5454
return;
5555
}
5656

57-
std::basic_string<byte> message;
58-
message.reserve(OOBHeader().size() + len);
59-
message.append(OOBHeader().begin(), OOBHeader().end());
60-
message.append(data, len);
57+
byte buf[MAX_MSGLEN]; // TODO should this be shorter, like MAX_PACKET?
58+
size_t size = OOBHeader().size() + len;
59+
if (size > sizeof(buf)) {
60+
Log::Warn("OutOfBandData: not sending excessively large (%d) message", len);
61+
return;
62+
}
63+
std::copy_n(OOBHeader().begin(), OOBHeader().size(), buf);
64+
std::copy_n(data, len, buf + OOBHeader().size());
6165

62-
msg_t mbuf;
63-
mbuf.data = &message[0];
64-
mbuf.cursize = message.size();
66+
msg_t mbuf{};
67+
mbuf.data = buf;
68+
mbuf.cursize = size;
6569
Huff_Compress( &mbuf, 12 );
6670
// send the datagram
6771
NET_SendPacket( sock, mbuf.cursize, mbuf.data, adr );

0 commit comments

Comments
 (0)