On Tue, Jan 29, 2019 at 11:50:05AM +0200, Yauheni Kaliuta wrote:
Hi, Lucas!
On Mon, 28 Jan 2019 10:05:24 -0800, Lucas De Marchi wrote:
> On Sat, Jan 26, 2019 at 3:01 AM Yauheni Kaliuta
> <yauheni.kaliuta@xxxxxxxxxx> wrote:
>>
[...]
>> >> +
>> >> + pvt->cms = cms;
>> >> + pvt->key_id = key_id_str;
>> >> + pvt->sno = sno_bn;
>> >> + sig_info->private = pvt;
>>
>> > why do you keep pvt around if the only thing you will do with
>> > it later is to free it?
>> > AFAICS the only thing that needs to remain around is the str
>> > so we can free it after the user used it (because normal
>> > signature is backed in memory by the mem object, while these
>> > are openssl structs)
>>
>> I should keep them until kmod_module_get_info() makes the copies.
>>
>> cms is openssl struct
>> sno_bn is allocated by openssl and must be freed later
>> key_id_str is allocated here since the size in unknown in advance
>> and must be freed later.
>>
>> Or what did I miss?
> we could just duplicate the information that we want stored and keep
> the openssl context contained
> to just this function. I thought the only one would be key_str_id, but
> missed that sig and signer
> also need to have their backing object around.
If I duplicate it here then without cleanup I'll have memory
leak, no?
yes, my idea was to just leave it simpler and add a
if (pkcs7)
free(key_id)
Lucas De Marchi
In the old code they were pointers inside the module image and
freed with the image itself.
--
WBR,
Yauheni Kaliuta