From 8ad56e8eda4a63e9a81c275e4eb26e9239237ad4 Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 28 11月 2020 09:31:41 +0800
Subject: [PATCH] replace strncpy with a more safe alternative

---
 src/library/licensecc.cpp |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/library/licensecc.cpp b/src/library/licensecc.cpp
index f9807a2..2642811 100644
--- a/src/library/licensecc.cpp
+++ b/src/library/licensecc.cpp
@@ -18,6 +18,7 @@
 #include <licensecc_properties.h>
 
 #include "base/logger.h"
+#include "base/string_utils.h"
 #include "hw_identifier/hw_identifier_facade.hpp"
 #include "os/execution_environment.hpp"
 #include "limits/license_verifier.hpp"
@@ -34,7 +35,7 @@
 	if (*bufSize > LCC_API_PC_IDENTIFIER_SIZE && chbuffer != nullptr) {
 		try {
 			const string pc_id = license::hw_identifier::HwIdentifierFacade::generate_user_pc_signature(pc_id_method);
-			strncpy(chbuffer, pc_id.c_str(), *bufSize);
+			license::mstrlcpy(chbuffer, pc_id.c_str(), *bufSize);
 			result = true;
 		} catch (const std::exception& ex) {
 			LOG_ERROR("Error calculating hw_identifier: %s", ex.what());
@@ -45,8 +46,8 @@
 	} else {
 		*bufSize = LCC_API_PC_IDENTIFIER_SIZE + 1;
 	}
+	static const license::os::ExecutionEnvironment exec_env;
 	if (execution_environment_info != nullptr) {
-		const license::os::ExecutionEnvironment exec_env;
 		execution_environment_info->cloud_provider = exec_env.cloud_provider();
 		execution_environment_info->virtualization = exec_env.virtualization();
 		execution_environment_info->virtualization_detail = exec_env.virtualization_detail();

--
Gitblit v1.9.1