From: Daan De Meyer Date: Mon, 10 Jul 2023 10:20:33 +0000 (+0200) Subject: tpm2-util: Check for dlopen() when calculating tpm2 support X-Git-Tag: v254-rc2~49^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3393104984064dcc3eacaa87880fbc6840374396;p=thirdparty%2Fsystemd.git tpm2-util: Check for dlopen() when calculating tpm2 support --- diff --git a/src/creds/creds.c b/src/creds/creds.c index 51efe276168..679b0750de2 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -636,11 +636,13 @@ static int verb_has_tpm2(int argc, char **argv, void *userdata) { printf("%sfirmware\n" "%sdriver\n" "%ssystem\n" - "%ssubsystem\n", + "%ssubsystem\n" + "%slibraries\n", plus_minus(s & TPM2_SUPPORT_FIRMWARE), plus_minus(s & TPM2_SUPPORT_DRIVER), plus_minus(s & TPM2_SUPPORT_SYSTEM), - plus_minus(s & TPM2_SUPPORT_SUBSYSTEM)); + plus_minus(s & TPM2_SUPPORT_SUBSYSTEM), + plus_minus(s & TPM2_SUPPORT_LIBRARIES)); } /* Return inverted bit flags. So that TPM2_SUPPORT_FULL becomes EXIT_SUCCESS and the other values diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c index c991109f722..9166b6593ff 100644 --- a/src/shared/tpm2-util.c +++ b/src/shared/tpm2-util.c @@ -4195,6 +4195,10 @@ Tpm2Support tpm2_support(void) { #if HAVE_TPM2 support |= TPM2_SUPPORT_SYSTEM; + + r = dlopen_tpm2(); + if (r >= 0) + support |= TPM2_SUPPORT_LIBRARIES; #endif return support; diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h index c34239854bf..ad867b9d1d3 100644 --- a/src/shared/tpm2-util.h +++ b/src/shared/tpm2-util.h @@ -183,7 +183,8 @@ typedef enum Tpm2Support { TPM2_SUPPORT_DRIVER = 1 << 1, /* the kernel has a driver loaded for it */ TPM2_SUPPORT_SYSTEM = 1 << 2, /* we support it ourselves */ TPM2_SUPPORT_SUBSYSTEM = 1 << 3, /* the kernel has the tpm subsystem enabled */ - TPM2_SUPPORT_FULL = TPM2_SUPPORT_FIRMWARE|TPM2_SUPPORT_DRIVER|TPM2_SUPPORT_SYSTEM|TPM2_SUPPORT_SUBSYSTEM, + TPM2_SUPPORT_LIBRARIES = 1 << 4, /* we can dlopen the tpm2 libraries */ + TPM2_SUPPORT_FULL = TPM2_SUPPORT_FIRMWARE|TPM2_SUPPORT_DRIVER|TPM2_SUPPORT_SYSTEM|TPM2_SUPPORT_SUBSYSTEM|TPM2_SUPPORT_LIBRARIES, } Tpm2Support; enum {