open-license-manager
2014-07-29 4150ba45f73e3ae0ba3ee6a4006acedf7709c8e7
valgrind
4个文件已修改
33 ■■■■■ 已修改文件
src/library/os/linux/os-linux.c 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/license-generator/LicenseSigner.cpp 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/functional/generate-license.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/functional/volid_test.cpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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);
@@ -124,6 +125,8 @@
     */
    /* Clean up */
    //free(buffer);
    if (pktmp)
        EVP_PKEY_free(pktmp);
    if (signature)
        OPENSSL_free(signature);
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;
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