C++ утечка памяти c DPAPI CryptUnprotectData

27
16 августа 2018, 22:20

Пытаюсь реализовать функцию дешифрования из DPAPI. Позже я заметил, что после моей функции в памяти забивается 8.13 kB. Я выполнил снятие памяти на каждой строке и выявил, что эту память занимает функция CryptUnprotectData. Это косяк тех программистов, которые писали эту функцию или мне просто нужно очистить определенные переменные? Или же есть какой то другой вариант?

#include <vector>
#include <wincrypt.h>
#pragma comment(lib, "Crypt32.lib")
using namespace std;
void DecryptDPAPI(vector<byte> input, vector<byte> entropy)
{
    vector<byte> result; // + 0.04 KB
    DATA_BLOB inputBlob;
    inputBlob.cbData = input.size();
    inputBlob.pbData = &input[0];
    PDATA_BLOB entropyBlob = NULL;
    if (entropy.size() > 0)
    {
        entropyBlob = &DATA_BLOB();
        entropyBlob->cbData = entropy.size();
        entropyBlob->pbData = &entropy[0];
    }
    DATA_BLOB resultBlob;
    resultBlob.cbData = 0;
    resultBlob.pbData = NULL;
    if (CryptUnprotectData(&inputBlob, NULL, entropyBlob, NULL, NULL, CRYPTPROTECT_LOCAL_MACHINE, &resultBlob)) // + 8.13 KB
    {
        result = vector<byte>(resultBlob.pbData, resultBlob.pbData + resultBlob.cbData); // + 0.04 KB
    }
}
READ ALSO
Test project не выполняет test case

Test project не выполняет test case

Создал юнит-тест c помощью Boost Test

38
Вопрос по лямбдам в Java, функции map, filter

Вопрос по лямбдам в Java, функции map, filter

Пытаюсь переделать данные методы в stream, используя filter и map методы

54
JVM: где находится TLAB?

JVM: где находится TLAB?

Мною была прочитана статья на хабре о TLAB Понятно, что у каждого трэда есть свои выделенные куски памятиНо откуда они выделяются? Из хипа? Наблюдаю...

25
Front nodejs (vue) и Spring end безопасность взаимодействия

Front nodejs (vue) и Spring end безопасность взаимодействия

Хочу разработать фронт на vue, который крутится на nodejsСерверная часть будет на spring boot через restapi

43