[fix] call memset() before using strncpy()

This commit is contained in:
dijunkun
2024-08-13 17:07:19 +08:00
parent d1f3d11318
commit 2cde54cf30
3 changed files with 5 additions and 1 deletions

View File

@@ -74,7 +74,9 @@ int Render::SaveSettingsIntoCacheFile() {
}
fseek(cd_cache_file_, 0, SEEK_SET);
memset(&cd_cache_.client_id, 0, sizeof(cd_cache_.client_id));
strncpy(cd_cache_.client_id, client_id_, sizeof(client_id_));
memset(&cd_cache_.password, 0, sizeof(cd_cache_.password));
strncpy(cd_cache_.password, password_saved_.c_str(),
password_saved_.length());
memcpy(&cd_cache_.language, &language_button_value_,
@@ -125,6 +127,7 @@ int Render::LoadSettingsFromCacheFile() {
fread(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_);
fclose(cd_cache_file_);
memset(&cd_cache_.client_id, 0, sizeof(cd_cache_.client_id));
strncpy(client_id_, cd_cache_.client_id, sizeof(client_id_));
password_saved_ = cd_cache_.password;
language_button_value_ = cd_cache_.language;

View File

@@ -237,6 +237,7 @@ void Render::NetStatusReport(int client_id, TraversalMode mode,
Render *render = (Render *)user_data;
if (client_id != 0 && 0 == strcmp(render->client_id_, "")) {
std::string client_id_s = std::to_string(client_id);
memset(&render->client_id_, 0, sizeof(render->client_id_));
strncpy(render->client_id_, client_id_s.c_str(),
sizeof(render->client_id_));
LOG_INFO("Use client id [{}] and save id into cache file", client_id_s);