[PATCH 3/4] efi_loader: simplify efi_sigstore_parse_sigdb()

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Oct 1 18:42:14 CEST 2021



On 9/12/21 21:23, Ilias Apalodimas wrote:
> Hi Heinrich
>
> [...]
>>>> -    if (!u16_strcmp(name, L"PK") || !u16_strcmp(name, L"KEK")) {
>>>> -            vendor = &efi_global_variable_guid;
>>>> -    } else if (!u16_strcmp(name, L"db") || !u16_strcmp(name, L"dbx")) {
>>>> -            vendor = &efi_guid_image_security_database;
>>>> -    } else {
>>>> +    vendor = efi_auth_var_get_guid(name);
>>>> +    if (!vendor) {
>>>>               EFI_PRINT("unknown signature database, %ls\n", name);
>>>>               return NULL;
>>>>       }
>>>
>>> efi_auth_var_get_guid() will return &efi_global_variable_guid if the
>>> GUID for the variable name isn't found.
>>
>> Hello Ilias, that is on purpose. In nevedit_efi we need a default GUID.
>> I want to reuse the same function there in future.
>>
>> Best regards
>
> Then I guess the check can go away ?

Yes

>
>>
>> Heinrich
>>
>>>
>>>>
>>>> -    /* retrieve variable data */
>>>> -    db_size = 0;
>>>> -    ret = EFI_CALL(efi_get_variable(name, vendor, NULL, &db_size, NULL));
>>>> -    if (ret == EFI_NOT_FOUND) {
>>>> -            EFI_PRINT("variable, %ls, not found\n", name);
>>>> -            sigstore = calloc(sizeof(*sigstore), 1);
>>>> -            return sigstore;
>>>> -    } else if (ret != EFI_BUFFER_TOO_SMALL) {
>>>> -            EFI_PRINT("Getting variable, %ls, failed\n", name);
>>>> -            return NULL;
>>>> -    }
>>>> -
>>>> -    db = malloc(db_size);
>>>> +    db = efi_get_var(name, vendor, &db_size);
>>>>       if (!db) {
>>>> -            EFI_PRINT("Out of memory\n");
>>>> -            return NULL;
>>>> -    }
>>>> -
>>>> -    ret = EFI_CALL(efi_get_variable(name, vendor, NULL, &db_size, db));
>>>> -    if (ret != EFI_SUCCESS) {
>>>> -            EFI_PRINT("Getting variable, %ls, failed\n", name);
>>>> -            free(db);
>>>> -            return NULL;
>>>> +            EFI_PRINT("variable, %ls, not found\n", name);
>>>> +            return calloc(sizeof(struct efi_signature_store), 1);
>
> Why? From the patch alone it's not clear why you want to allocate
> memory here instead of returning NULL.

This is existing code. See the same lines deleted above.

Best regards

Heinrich

>
>>>>       }
>>>>
>>>>       return efi_build_signature_store(db, db_size);
>>>> --
>>>> 2.30.2
>>>>
>
> Cheers
> /Ilias
>


More information about the U-Boot mailing list