From 4150ba45f73e3ae0ba3ee6a4006acedf7709c8e7 Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周二, 29 7月 2014 07:52:19 +0800 Subject: [PATCH] valgrind --- test/functional/generate-license.cpp | 2 +- src/library/os/linux/os-linux.c | 19 +++++++++++++------ src/license-generator/LicenseSigner.cpp | 9 ++++++--- test/functional/volid_test.cpp | 7 +++---- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/library/os/linux/os-linux.c b/src/library/os/linux/os-linux.c index cfb5bf4..3746ddf 100644 --- a/src/library/os/linux/os-linux.c +++ b/src/library/os/linux/os-linux.c @@ -10,7 +10,7 @@ #include <linux/if_link.h> #include <sys/socket.h> #include <netpacket/packet.h> - +#include <valgrind/memcheck.h> #include <paths.h> #include <stdlib.h> @@ -156,6 +156,7 @@ f_return = BUFFER_TOO_SMALL; } freeifaddrs(ifaddr); + free(ifnames); return f_return; } /** @@ -169,11 +170,12 @@ size_t len; unsigned int i, j; char * hexuuid; - char cur_character; + unsigned char cur_character; //remove characters not in hex set len = strlen(uuid); hexuuid = (char *) malloc(sizeof(char) * strlen(uuid)); memset(buffer_out, 0, out_size); + memset(hexuuid, 0, sizeof(char) * strlen(uuid)); for (i = 0, j = 0; i < len; i++) { if (isxdigit(uuid[i])) { @@ -188,7 +190,7 @@ hexuuid[j++] = '0'; } hexuuid[j] = '\0'; - for (i = 0; i < j; i++) { + for (i = 0; i < j/2; i++) { sscanf(&hexuuid[i * 2], "%2hhx", &cur_character); buffer_out[i % out_size] = buffer_out[i % out_size] ^ cur_character; } @@ -220,8 +222,9 @@ maxDrives = MAX_UNITS; tmpDrives = (DiskInfo *) malloc(sizeof(DiskInfo) * maxDrives); } - statDrives = (__ino64_t *) malloc(maxDrives * sizeof(__ino64_t )); memset(tmpDrives, 0, sizeof(DiskInfo) * maxDrives); + statDrives = (__ino64_t *) malloc(maxDrives * sizeof(__ino64_t )); + memset(statDrives, 0, sizeof(__ino64_t ) * maxDrives);; aFile = setmntent("/proc/mounts", "r"); if (aFile == NULL) { @@ -234,6 +237,7 @@ #ifdef _DEBUG printf("Open /dev/disk/by-uuid fail"); #endif + free(statDrives); return ERROR; } @@ -288,8 +292,10 @@ parseUUID(dir->d_name, tmpDrives[i].disk_sn, sizeof(tmpDrives[i].disk_sn)); #ifdef _DEBUG - printf("uuid %d %s %s %02x%02x%02x%02x\n", i, - tmpDrives[i].device, path, + VALGRIND_CHECK_VALUE_IS_DEFINED(tmpDrives[i].device); + + printf("uuid %d %s %02x%02x%02x%02x\n", i, + tmpDrives[i].device, tmpDrives[i].disk_sn[0], tmpDrives[i].disk_sn[1], tmpDrives[i].disk_sn[2], @@ -337,6 +343,7 @@ } } */ + free(statDrives); return result; } diff --git a/src/license-generator/LicenseSigner.cpp b/src/license-generator/LicenseSigner.cpp index 908cd46..53fd2f5 100644 --- a/src/license-generator/LicenseSigner.cpp +++ b/src/license-generator/LicenseSigner.cpp @@ -59,7 +59,8 @@ if (!mdctx) { throw logic_error("Message digest creation context"); } - const char *private_key = PRIVATE_KEY; + const char *private_key = PRIVATE_KEY + ; BIO* bio = BIO_new_mem_buf((void*) (private_key), strlen(private_key)); EVP_PKEY *pktmp = PEM_read_bio_PrivateKey(bio, NULL, NULL, NULL); BIO_free(bio); @@ -97,8 +98,8 @@ */ //bio = BIO_new_fp(stdout, BIO_NOCLOSE); /*int encodedSize = 4 * ceil(slen / 3); - char* buffer = (char*) (malloc(encodedSize + 1)); - memset(buffer,0,encodedSize+1);*/ + char* buffer = (char*) (malloc(encodedSize + 1)); + memset(buffer,0,encodedSize+1);*/ string signatureStr = Opensslb64Encode(slen, signature); /* * BIO *bio, *b64; @@ -124,6 +125,8 @@ */ /* Clean up */ //free(buffer); + if (pktmp) + EVP_PKEY_free(pktmp); if (signature) OPENSSL_free(signature); diff --git a/test/functional/generate-license.cpp b/test/functional/generate-license.cpp index 8ece3cf..1a6594e 100644 --- a/test/functional/generate-license.cpp +++ b/test/functional/generate-license.cpp @@ -28,7 +28,7 @@ argv[i++] = fname.c_str(); argv[i++] = "TEST"; int retCode = LicenseGenerator::generateLicense(argc, argv); - delete (argv); + delete[] (argv); BOOST_CHECK_EQUAL(retCode, 0); BOOST_ASSERT(fs::exists(fname)); CSimpleIniA ini; diff --git a/test/functional/volid_test.cpp b/test/functional/volid_test.cpp index de17e53..996fbb6 100644 --- a/test/functional/volid_test.cpp +++ b/test/functional/volid_test.cpp @@ -67,15 +67,14 @@ std::ifstream is(idfileLocation); std::istream_iterator<string> start(is), end; std::vector<string> reference_signatures(start, end); - BOOST_CHECK_EQUAL(reference_signatures.size(), num_strategies); + BOOST_ASSERT(reference_signatures.size() == num_strategies); PcSignature generated_identifier; BOOST_CHECKPOINT("Generating current signatures and comparing with past"); for (int i = 0; i < num_strategies; i++) { FUNCTION_RETURN generate_ok = generate_user_pc_signature( generated_identifier, strategies[i]); BOOST_ASSERT(generate_ok == FUNCTION_RETURN::OK); - if (memcmp(generated_identifier, reference_signatures[i].c_str(), - sizeof(PcSignature))) { + if (reference_signatures[i] != generated_identifier) { string message = string("pc signature compare fail: strategy:") + to_string(strategies[i]) + " generated: [" + generated_identifier + "] reference: [" @@ -88,7 +87,7 @@ for (int j = 0; j < 100; j++) { for (unsigned int i = 0; i < reference_signatures.size(); i++) { PcSignature pcsig; - memcpy(pcsig, reference_signatures[i].c_str(), sizeof(PcSignature)); + strncpy(pcsig, reference_signatures[i].c_str(), sizeof(PcSignature)); EVENT_TYPE val_result = validate_pc_signature(pcsig); string message = string("pc signature verification strategy:") + to_string(i) + " generated: [" + generated_identifier -- Gitblit v1.9.1