From 296baa1f2f26aa5fe711d154d557ca2a7d6f9b5d Mon Sep 17 00:00:00 2001 From: Gabriele Contini <contini.mailing@gmail.com> Date: 周日, 01 9月 2019 14:47:33 +0800 Subject: [PATCH] removed old boost version made boost required --- src/library/pc-identifiers.c | 23 ++++++++++++++++------- 1 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/library/pc-identifiers.c b/src/library/pc-identifiers.c index 6b4144b..762a2ac 100644 --- a/src/library/pc-identifiers.c +++ b/src/library/pc-identifiers.c @@ -39,11 +39,11 @@ if (identifiers == NULL || *num_identifiers == 0) { result_adapterInfos = getAdapterInfos(NULL, &adapter_num); - if (result_adapterInfos != FUNC_RET_OK) { + if ((result_adapterInfos != FUNC_RET_OK) || (adapter_num == 0)) { return generate_disk_pc_id(identifiers, num_identifiers, false); } result_diskinfos = getDiskInfos(NULL, &disk_num); - if (result_diskinfos != FUNC_RET_OK) { + if ((result_diskinfos != FUNC_RET_OK) || (disk_num == 0)) { return generate_ethernet_pc_id(identifiers, num_identifiers, true); } *num_identifiers = disk_num * adapter_num; @@ -84,7 +84,11 @@ } } end: - *num_identifiers = cmin(*num_identifiers, adapter_num * disk_num); +#ifdef _MSC_VER + *num_identifiers = min(*num_identifiers, adapter_num * disk_num); +#else + *num_identifiers = cmin(*num_identifiers, adapter_num * disk_num); +#endif free(diskInfoPtr); free(adapterInfoPtr); } @@ -149,7 +153,7 @@ return result_diskinfos; } diskInfos = (DiskInfo*) malloc(disk_num * sizeof(DiskInfo)); - //memset(diskInfos,0,disk_num * sizeof(DiskInfo)); + memset(diskInfos,0,disk_num * sizeof(DiskInfo)); result_diskinfos = getDiskInfos(diskInfos, &disk_num); if (result_diskinfos != FUNC_RET_OK) { free(diskInfos); @@ -175,7 +179,7 @@ if (use_label) { if (diskInfos[i].label[0] != 0) { memset(identifiers[j], 0, sizeof(PcIdentifier)); //!!!!!!! - strncpy(identifiers[j], diskInfos[i].label, + strncpy((char*)identifiers[j], diskInfos[i].label, sizeof(PcIdentifier)); j++; } @@ -277,7 +281,7 @@ PcSignature pc_identifier_out) { //TODO base62 encoding, now uses base64 PcIdentifier concat_identifiers[2]; - char* b64_data; + char* b64_data = NULL; int b64_size = 0; size_t concatIdentifiersSize = sizeof(PcIdentifier) * 2; //concat_identifiers = (PcIdentifier *) malloc(concatIdentifiersSize); @@ -285,6 +289,7 @@ memcpy(&concat_identifiers[1], identifier2, sizeof(PcIdentifier)); b64_data = base64(concat_identifiers, concatIdentifiersSize, &b64_size); if (b64_size > sizeof(PcSignature)) { + free(b64_data); return FUNC_RET_BUFFER_TOO_SMALL; } sprintf(pc_identifier_out, "%.4s-%.4s-%.4s-%.4s", &b64_data[0], @@ -313,6 +318,7 @@ req_buffer_size = req_buffer_size < 2 ? 2 : req_buffer_size; identifiers = (PcIdentifier *) malloc( sizeof(PcIdentifier) * req_buffer_size); + memset(identifiers, 0, sizeof(PcIdentifier) * req_buffer_size); result = generate_pc_id(identifiers, &req_buffer_size, strategy); if (result != FUNC_RET_OK) { free(identifiers); @@ -341,7 +347,7 @@ PcIdentifier identifier2_out, PcSignature pc_signature_in) { //TODO base62 encoding, now uses base64 - unsigned char * concat_identifiers; + unsigned char * concat_identifiers = NULL; char base64ids[17]; int identifiers_size; @@ -349,6 +355,7 @@ &base64ids[8], &base64ids[12]); concat_identifiers = unbase64(base64ids, 16, &identifiers_size); if (identifiers_size > sizeof(PcIdentifier) * 2) { + free(concat_identifiers); return FUNC_RET_BUFFER_TOO_SMALL; } memcpy(identifier1_out, concat_identifiers, sizeof(PcIdentifier)); @@ -382,6 +389,7 @@ for (i = 0; i < 2; i++) { current_strategy_id = strategy_from_pc_id(user_identifiers[i]); if (current_strategy_id == STRATEGY_UNKNOWN) { + free(calculated_identifiers); return LICENSE_MALFORMED; } if (current_strategy_id != previous_strategy_id) { @@ -392,6 +400,7 @@ generate_pc_id(NULL, &calc_identifiers_size, current_strategy_id); calculated_identifiers = (PcIdentifier *) malloc( sizeof(PcIdentifier) * calc_identifiers_size); + memset(calculated_identifiers, 0, sizeof(PcIdentifier) * calc_identifiers_size); generate_pc_id(calculated_identifiers, &calc_identifiers_size, current_strategy_id); } -- Gitblit v1.9.1