mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
fix: Remove fatal error for non-erroneous case
We allow non-null data pointers to be passed to functions alongside 0-length data. For example when creating a data buffer that has room for the entire packet, including ignored header data. This error broke a rare but legitimate case where we miss packets during a handshake attempt and need to store empty handshake packets in the packet array.
This commit is contained in:
parent
812f931d5f
commit
87bcc4322d
|
@ -1 +1 @@
|
|||
a6701e463517907cdb450f3210389633feb6c1cc3a1d3faec48c8b99a4aebf3c /usr/local/bin/tox-bootstrapd
|
||||
398b0a1ffe8d4d76252964636e083c18ee08e9ceab58b3b377b61821ca04c17c /usr/local/bin/tox-bootstrapd
|
||||
|
|
|
@ -1442,6 +1442,9 @@ non_null(1, 2, 3, 5, 6) nullable(4)
|
|||
static int group_packet_unwrap(const Logger *log, const GC_Connection *gconn, uint8_t *data, uint64_t *message_id,
|
||||
uint8_t *packet_type, const uint8_t *packet, uint16_t length)
|
||||
{
|
||||
assert(data != nullptr);
|
||||
assert(packet != nullptr);
|
||||
|
||||
if (length <= CRYPTO_NONCE_SIZE) {
|
||||
LOGGER_FATAL(log, "Invalid packet length: %u", length);
|
||||
return -1;
|
||||
|
|
|
@ -101,16 +101,12 @@ static bool create_array_entry(const Logger *log, const Mono_Time *mono_time, GC
|
|||
}
|
||||
|
||||
if (length == 0) {
|
||||
if (data != nullptr) {
|
||||
LOGGER_FATAL(log, "Got non-null data with zero length (type %d)", packet_type); // should never happen
|
||||
return false;
|
||||
}
|
||||
|
||||
array_entry->data = nullptr;
|
||||
array_entry->data_length = 0;
|
||||
} else {
|
||||
if (data == nullptr) {
|
||||
LOGGER_FATAL(log, "Got null data with non-zero length (type %u)", packet_type); // should never happen
|
||||
if (data == nullptr) { // should never happen
|
||||
LOGGER_FATAL(log, "Got null data with non-zero length (length: %u, type %u)",
|
||||
length, packet_type);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user