From abe800cc16fc7d852176ea8a1c991ee26a249c08 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 8 Jun 2019 22:16:23 +0200 Subject: [PATCH] Avoid colons in VATLIB packets https://discordapp.com/channels/539048679160676382/567983892791951374/585899398387728395 --- src/blackcore/vatsim/networkvatlib.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index 99c8f3120..542afafff 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -303,7 +303,11 @@ namespace BlackCore QByteArray CNetworkVatlib::toFSDnoColon(const QString &qstr) const { if (!qstr.contains(':')) { return toFSD(qstr); } - BLACK_VERIFY_X(false, Q_FUNC_INFO, "Illegal char :"); + if (CBuildConfig::isLocalDeveloperDebugBuild()) + { + // so we can investigate + BLACK_VERIFY_X(false, Q_FUNC_INFO, "Illegal char :"); + } QString copy(qstr); return toFSD(copy.remove(':')); } @@ -719,7 +723,7 @@ namespace BlackCore void CNetworkVatlib::replyToNameQuery(const CCallsign &callsign) // private { - QStringList response { m_server.getUser().getRealNameAndHomeBase(), "" }; + QStringList response { removeColon(m_server.getUser().getRealNameAndHomeBase()), "" }; Vat_SendClientQueryResponse(m_net.data(), vatClientQueryName, toFSD(callsign), toFSD(response)(), response.size()); } @@ -729,7 +733,7 @@ namespace BlackCore config.insert(CAircraftParts::attributeNameIsFullJson(), true); QString data = QJsonDocument(QJsonObject { { "config", config } }).toJson(QJsonDocument::Compact); data = convertToUnicodeEscaped(data); - Vat_SendAircraftConfig(m_net.data(), toFSD(callsign), toFSD(data)); + Vat_SendAircraftConfig(m_net.data(), toFSD(callsign), toFSDnoColon(data)); } void CNetworkVatlib::sendIcaoCodesQuery(const CCallsign &callsign) @@ -1340,6 +1344,10 @@ namespace BlackCore { QPointer self(cbvar_cast(cbvar)); const CCallsign callsign(self->fromFSD(callsignString)); + const bool valid = !callsign.isEmpty(); + BLACK_AUDIT_X(valid, Q_FUNC_INFO, "No callsign"); + if (!valid) { return; } + switch (type) { case vatClientQueryFreq: