From 95f342f8759bb545f0cd63077734e17a879ec9d4 Mon Sep 17 00:00:00 2001 From: gorbit99 Date: Wed, 18 Jun 2025 14:25:02 +0200 Subject: [PATCH] Fix 0 byte string sending and check for lengths --- src/network/connection.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 2a2d4e4..84efe4c 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -23,6 +23,8 @@ #include "connection.h" +#include + #include "GlobalVars.h" #include "logging/Logger.h" #include "packets.h" @@ -165,8 +167,12 @@ bool Connection::sendPacketNumber() { bool Connection::sendShortString(const char* str) { uint8_t size = strlen(str); + assert(size <= 255); + MUST_TRANSFER_BOOL(sendByte(size)); - MUST_TRANSFER_BOOL(sendBytes((const uint8_t*)str, size)); + if (size > 0) { + MUST_TRANSFER_BOOL(sendBytes((const uint8_t*)str, size)); + } return true; } @@ -373,10 +379,15 @@ void Connection::sendTrackerDiscovery() { // Tracker type to hint the server if it's a glove or normal tracker or // something else MUST_TRANSFER_BOOL(sendByte(static_cast(TRACKER_TYPE))); + static_assert(std::string_view{VENDOR_NAME}.size() <= 255); MUST_TRANSFER_BOOL(sendShortString(VENDOR_NAME)); + static_assert(std::string_view{VENDOR_URL}.size() <= 255); MUST_TRANSFER_BOOL(sendShortString(VENDOR_URL)); + static_assert(std::string_view{PRODUCT_NAME}.size() <= 255); MUST_TRANSFER_BOOL(sendShortString(PRODUCT_NAME)); + static_assert(std::string_view{UPDATE_ADDRESS}.size() <= 255); MUST_TRANSFER_BOOL(sendShortString(UPDATE_ADDRESS)); + static_assert(std::string_view{UPDATE_NAME}.size() <= 255); MUST_TRANSFER_BOOL(sendShortString(UPDATE_NAME)); return true; }, @@ -756,7 +767,8 @@ void Connection::update() { auto& sensors = sensorManager.getSensors(); if (sensorId >= sensors.size()) { - m_Logger.warn("Invalid sensor config flag packet: invalid sensor id" + m_Logger.warn( + "Invalid sensor config flag packet: invalid sensor id" ); break; }