[libcamera-devel] [PATCH] libcamera: ipa_manager: Fix build without openssl

Umang Jain umang.jain at ideasonboard.com
Wed Sep 14 11:29:18 CEST 2022


Hi  Matthias, Kieran

On 9/14/22 1:44 PM, Kieran Bingham via libcamera-devel wrote:
> Quoting Matthias Fend via libcamera-devel (2022-09-14 08:00:25)
>> Since commit bedef55d9500 ("libcamera: pub_key: Gracefully handle failures
>> to load public key'") the build will fail if openssl is not found on the
>> host system.
>> Use the existing HAVE_IPA_PUBKEY define to avoid accessing pubKey_ which
>> does not exist when building without openssl.
>>
>> Signed-off-by: Matthias Fend <matthias.fend at emfend.at>
>> ---
>>   src/libcamera/ipa_manager.cpp | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
>> index 2f96a207..030ef43f 100644
>> --- a/src/libcamera/ipa_manager.cpp
>> +++ b/src/libcamera/ipa_manager.cpp
>> @@ -109,8 +109,10 @@ IPAManager::IPAManager()
>>                  LOG(IPAManager, Fatal)
>>                          << "Multiple IPAManager objects are not allowed";
>>   
>> +#if HAVE_IPA_PUBKEY
> If we have to add a #if here, it feels to me like the implementation
> for handling the key itself isn't right.
>
> The alternative is to construct an invalid public key at
> src/libcamera/ipa_pub_key.cpp.in to ensure we always have a key.. but
> I'm not sure that sounds a lot better either...
>
> This is limited to the IPA manager which knows about the keys anyway, so
> ... worst case I could see this as a solution ... but I think I would
> always want to push against ifdeffery spreading
>
> Could you check if it's reasonable to instantiate a pubKey_ which isn't
> valid please?
>
> But given here in ipa_manager - we already use #if HAVE_IPA_PUBKEY in
> IPAManager::isSignatureValid() I think I'd let this through.

We also have HAVE_IPA_PUBKEY #ifdeffery in the ipa_manager.h header 
which makes conditional existence for pubKey_ member

class IPAManager
{
...
private:
     #if HAVE_IPA_PUBKEY
             static const uint8_t publicKeyData_[];
             static const PubKey pubKey_;
     #endif
}

>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

With the above header hunk in mind, the patch looks fine to me for now,

Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

>
>>          if (!pubKey_.isValid())
>>                  LOG(IPAManager, Warning) << "Public key not valid";
>> +#endif
>>   
>>          unsigned int ipaCount = 0;
>>   
>> -- 
>> 2.25.1
>>



More information about the libcamera-devel mailing list