Optimize OTA password storage from std::string to const char

This commit is contained in:
J. Nick Koston
2025-06-27 00:24:45 +02:00
parent b182f2d544
commit b41cc0226e
2 changed files with 6 additions and 5 deletions

View File

@@ -15,6 +15,7 @@
#include <cerrno> #include <cerrno>
#include <cstdio> #include <cstdio>
#include <cstring>
namespace esphome { namespace esphome {
@@ -76,7 +77,7 @@ void ESPHomeOTAComponent::dump_config() {
" Version: %d", " Version: %d",
network::get_use_address().c_str(), this->port_, USE_OTA_VERSION); network::get_use_address().c_str(), this->port_, USE_OTA_VERSION);
#ifdef USE_OTA_PASSWORD #ifdef USE_OTA_PASSWORD
if (!this->password_.empty()) { if (this->password_ != nullptr) {
ESP_LOGCONFIG(TAG, " Password configured"); ESP_LOGCONFIG(TAG, " Password configured");
} }
#endif #endif
@@ -168,7 +169,7 @@ void ESPHomeOTAComponent::handle_() {
this->writeall_(buf, 1); this->writeall_(buf, 1);
#ifdef USE_OTA_PASSWORD #ifdef USE_OTA_PASSWORD
if (!this->password_.empty()) { if (this->password_ != nullptr) {
buf[0] = ota::OTA_RESPONSE_REQUEST_AUTH; buf[0] = ota::OTA_RESPONSE_REQUEST_AUTH;
this->writeall_(buf, 1); this->writeall_(buf, 1);
md5::MD5Digest md5{}; md5::MD5Digest md5{};
@@ -187,7 +188,7 @@ void ESPHomeOTAComponent::handle_() {
// prepare challenge // prepare challenge
md5.init(); md5.init();
md5.add(this->password_.c_str(), this->password_.length()); md5.add(this->password_, strlen(this->password_));
// add nonce // add nonce
md5.add(sbuf, 32); md5.add(sbuf, 32);

View File

@@ -13,7 +13,7 @@ namespace esphome {
class ESPHomeOTAComponent : public ota::OTAComponent { class ESPHomeOTAComponent : public ota::OTAComponent {
public: public:
#ifdef USE_OTA_PASSWORD #ifdef USE_OTA_PASSWORD
void set_auth_password(const std::string &password) { password_ = password; } void set_auth_password(const char *password) { password_ = password; }
#endif // USE_OTA_PASSWORD #endif // USE_OTA_PASSWORD
/// Manually set the port OTA should listen on /// Manually set the port OTA should listen on
@@ -32,7 +32,7 @@ class ESPHomeOTAComponent : public ota::OTAComponent {
bool writeall_(const uint8_t *buf, size_t len); bool writeall_(const uint8_t *buf, size_t len);
#ifdef USE_OTA_PASSWORD #ifdef USE_OTA_PASSWORD
std::string password_; const char *password_{nullptr};
#endif // USE_OTA_PASSWORD #endif // USE_OTA_PASSWORD
uint16_t port_; uint16_t port_;