From 44617295c7db7b4c134f69e69b11bb7d9011ddfe Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 6 Mar 2023 19:30:21 -0500 Subject: [PATCH] Enable -Wconversion in mbed platform code. (#25409) --- src/platform/mbed/BUILD.gn | 2 ++ .../mbed/NetworkCommissioningDriver.h | 5 +++-- .../mbed/NetworkCommissioningWiFiDriver.cpp | 21 ++++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/platform/mbed/BUILD.gn b/src/platform/mbed/BUILD.gn index 452c1e8f3d7ccf..e8029944beef69 100644 --- a/src/platform/mbed/BUILD.gn +++ b/src/platform/mbed/BUILD.gn @@ -47,4 +47,6 @@ static_library("mbed") { "NetworkCommissioningWiFiDriver.cpp", ] } + + cflags = [ "-Wconversion" ] } diff --git a/src/platform/mbed/NetworkCommissioningDriver.h b/src/platform/mbed/NetworkCommissioningDriver.h index 82d83d73558417..017f69218267a1 100644 --- a/src/platform/mbed/NetworkCommissioningDriver.h +++ b/src/platform/mbed/NetworkCommissioningDriver.h @@ -47,8 +47,9 @@ class MbedScanResponseIterator : public Iterator } item.security.SetRaw(mScanResults[mIternum].get_security()); - item.ssidLen = strnlen(reinterpret_cast(mScanResults[mIternum].get_ssid()), - chip::DeviceLayer::Internal::kMaxWiFiSSIDLength); + static_assert(chip::DeviceLayer::Internal::kMaxWiFiSSIDLength <= UINT8_MAX, "Our length won't fit in ssidLen"); + item.ssidLen = static_cast(strnlen(reinterpret_cast(mScanResults[mIternum].get_ssid()), + chip::DeviceLayer::Internal::kMaxWiFiSSIDLength)); item.channel = mScanResults[mIternum].get_channel(); item.wiFiBand = chip::DeviceLayer::NetworkCommissioning::WiFiBand::k2g4; item.rssi = mScanResults[mIternum].get_rssi(); diff --git a/src/platform/mbed/NetworkCommissioningWiFiDriver.cpp b/src/platform/mbed/NetworkCommissioningWiFiDriver.cpp index ee9f187ad5f98b..d9ddca2e501cae 100644 --- a/src/platform/mbed/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/mbed/NetworkCommissioningWiFiDriver.cpp @@ -69,14 +69,16 @@ CHIP_ERROR WiFiDriverImpl::Init(NetworkStatusChangeCallback * networkStatusChang auto err = PersistedStorage::KeyValueStoreMgr().Get(kWiFiSSIDKeyName, mSavedNetwork.ssid, sizeof(mSavedNetwork.ssid), &ssidLen); if (err == CHIP_NO_ERROR) { - mSavedNetwork.ssidLen = ssidLen; + static_assert(sizeof(mSavedNetwork.ssid) <= UINT8_MAX, "Our length might not fit in mSavedNetwork.ssidLen"); + mSavedNetwork.ssidLen = static_cast(ssidLen); } err = PersistedStorage::KeyValueStoreMgr().Get(kWiFiCredentialsKeyName, mSavedNetwork.credentials, sizeof(mSavedNetwork.credentials), &credentialsLen); if (err == CHIP_NO_ERROR) { - mSavedNetwork.credentialsLen = credentialsLen; + static_assert(sizeof(mSavedNetwork.credentials) <= UINT8_MAX, "Our length might not fit in mSavedNetwork.credentialsLen"); + mSavedNetwork.credentialsLen = static_cast(credentialsLen); } if (mSavedNetwork.ssidLen != 0 && mSavedNetwork.credentialsLen != 0) @@ -291,10 +293,17 @@ void WiFiDriverImpl::ExecuteScanNetwork() MbedScanResponseIterator * scan_resp_iter; // Get APs number - ap_number = mWiFiInterface->scan(nullptr, 0); - if (!ap_number) + auto scan_result = mWiFiInterface->scan(nullptr, 0); + if (scan_result <= 0) { - ChipLogProgress(DeviceLayer, "No AP found"); + if (scan_result == 0) + { + ChipLogProgress(DeviceLayer, "No AP found"); + } + else + { + ChipLogError(DeviceLayer, "Error scanning for APs: %d", scan_result); + } if (mScanCallback) { mScanCallback->OnFinished(Status::kUnknownError, CharSpan(), nullptr); @@ -302,6 +311,8 @@ void WiFiDriverImpl::ExecuteScanNetwork() goto exit; } + ap_number = static_cast(scan_result); + ap_buffer = new WiFiAccessPoint[ap_number]; if (ap_buffer == nullptr) {