From 2fc843a1e2dd6bd9f6c84aaff6214ba2657931f2 Mon Sep 17 00:00:00 2001 From: Gabriele Contini <contini.mailing@gmail.com> Date: 周六, 11 1月 2020 14:44:17 +0800 Subject: [PATCH] issue #70 --- src/library/licensecc.cpp | 13 ++++++++----- extern/license-generator | 2 +- include/licensecc/datatypes.h | 14 ++++++++++---- include/licensecc/licensecc.h | 21 ++++++++++----------- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/extern/license-generator b/extern/license-generator index c40c095..61acc7d 160000 --- a/extern/license-generator +++ b/extern/license-generator @@ -1 +1 @@ -Subproject commit c40c0951e77c012a1c4043182c88ae5fe185efea +Subproject commit 61acc7dee39b9947e08d0753d2f69d2a41d5fe31 diff --git a/include/licensecc/datatypes.h b/include/licensecc/datatypes.h index 7a95afb..e769f6b 100644 --- a/include/licensecc/datatypes.h +++ b/include/licensecc/datatypes.h @@ -26,6 +26,12 @@ #define PC_IDENTIFIER_SIZE 19 #define PROPRIETARY_DATA_SIZE 16 #define AUDIT_EVENT_NUM 5 +#define AUDIT_EVENT_PARAM2 255 +#define VERSION_SIZE 15 +#define PROJECT_NAME_SIZE 15 +#define EXPIRY_DATE_SIZE 10 + +#define ERROR_BUFFER_SIZE 256 typedef enum { LICENSE_OK = 0, // OK @@ -59,7 +65,7 @@ * License file name or location where the license is stored. */ char license_reference[MAX_PATH]; - char param2[256]; + char param2[AUDIT_EVENT_PARAM2 + 1]; } AuditEvent; /** @@ -85,8 +91,8 @@ * Informations on the software requiring the license */ typedef struct { - char version[16]; // software version in format xxxx.xxxx.xxxx - char project_name[16]; // name of the project (must correspond to the name in the license) + char version[VERSION_SIZE + 1]; // software version in format xxxx.xxxx.xxxx + char project_name[PROJECT_NAME_SIZE + 1]; // name of the project (must correspond to the name in the license) uint32_t magic; // reserved } CallerInformations; typedef struct { @@ -100,7 +106,7 @@ * Eventual expiration date of the software, * can be '\0' if the software don't expire * */ - char expiry_date[11]; + char expiry_date[EXPIRY_DATE_SIZE + 1]; unsigned int days_left; bool has_expiry; bool linked_to_pc; diff --git a/include/licensecc/licensecc.h b/include/licensecc/licensecc.h index 353eba8..84fa177 100644 --- a/include/licensecc/licensecc.h +++ b/include/licensecc/licensecc.h @@ -2,8 +2,8 @@ #define LICENSEPP_H_ /* - * This include file is the public api di License++ -*/ + * This include file is the public api di Licensecc + */ #ifdef __cplusplus extern "C" { #endif @@ -12,15 +12,16 @@ /* * Method used to convert the LicenseInfo into a human readable - * representation. + * representation. //not yet implemented */ -void print_error(char out_buffer[256], LicenseInfo* licenseInfo); +void print_error(char out_buffer[ERROR_BUFFER_SIZE], LicenseInfo* licenseInfo); /** - * This method calculate the pc identifier. The string has to be shown - * to the user in order to calculate the license. + * This method calculates the pc identifier. The string need to be shown to the user and given back to the software + * editor when issuing a license. + * pc_id_method = STRATEGY_DEFAULT usually works. */ -bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* identifier_out, size_t bufSize); +bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* identifier_out, size_t* bufSize); /** * This method is used to request the use of one license for a product. @@ -43,13 +44,11 @@ * Should be called from time to time to confirm we're still using the * license. */ -EVENT_TYPE confirm_license(char * featureName, - LicenseLocation* licenseLocation); +EVENT_TYPE confirm_license(char* featureName, LicenseLocation* licenseLocation); /** * Do nothing for now, useful for network licenses. */ -EVENT_TYPE release_license(char * featureName, - LicenseLocation licenseLocation); +EVENT_TYPE release_license(char* featureName, LicenseLocation licenseLocation); #ifdef __cplusplus } diff --git a/src/library/licensecc.cpp b/src/library/licensecc.cpp index ff57cb3..63330cb 100644 --- a/src/library/licensecc.cpp +++ b/src/library/licensecc.cpp @@ -1,5 +1,5 @@ //============================================================================ -// Name : license-manager-cpp.cpp +// Name : licensecc.cpp // Author : // Version : // Copyright : BSD @@ -23,14 +23,17 @@ #include "pc-identifiers.h" using namespace std; -void print_error(char out_buffer[256], LicenseInfo* licenseInfo) {} -bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t bufSize) { +void print_error(char out_buffer[ERROR_BUFFER_SIZE], LicenseInfo* licenseInfo) {} + +bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t* bufSize) { FUNCTION_RETURN result = FUNC_RET_BUFFER_TOO_SMALL; - if (bufSize >= sizeof(PcSignature)) { + if (*bufSize > sizeof(PcSignature)) { PcSignature identifier_out; result = generate_user_pc_signature(identifier_out, pc_id_method); - strncpy(chbuffer, identifier_out, bufSize); + strncpy(chbuffer, identifier_out, *bufSize); + } else { + *bufSize = sizeof(PcSignature) + 1; } return result == FUNC_RET_OK; } -- Gitblit v1.9.1