]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/tpm2-util: simplify and convert to the new helper
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 22 Jun 2021 07:25:12 +0000 (09:25 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 24 Jun 2021 08:20:27 +0000 (10:20 +0200)
The function would return 0 or 3. I don't think the return code was
used for anything, so let's avoid the explicit calculation and return
0 or 1.

src/shared/tpm2-util.c

index da78e1f406f08fbdb3fa5855d94efd60ec3b6baf..df6d2eef58841342eea9bfcd69c1ebf8ac948902 100644 (file)
@@ -42,84 +42,38 @@ TSS2_RC (*sym_Tss2_MU_TPM2B_PUBLIC_Marshal)(TPM2B_PUBLIC const *src, uint8_t buf
 TSS2_RC (*sym_Tss2_MU_TPM2B_PUBLIC_Unmarshal)(uint8_t const buffer[], size_t buffer_size, size_t *offset, TPM2B_PUBLIC *dest) = NULL;
 
 int dlopen_tpm2(void) {
-        int r, k = 0;
-
-        if (!libtss2_esys_dl) {
-                _cleanup_(dlclosep) void *dl = NULL;
-
-                dl = dlopen("libtss2-esys.so.0", RTLD_LAZY);
-                if (!dl)
-                        return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
-                                               "TPM2 support is not installed: %s", dlerror());
-
-                r = dlsym_many_or_warn(
-                                dl,
-                                LOG_DEBUG,
-                                DLSYM_ARG(Esys_Create),
-                                DLSYM_ARG(Esys_CreatePrimary),
-                                DLSYM_ARG(Esys_Finalize),
-                                DLSYM_ARG(Esys_FlushContext),
-                                DLSYM_ARG(Esys_Free),
-                                DLSYM_ARG(Esys_GetRandom),
-                                DLSYM_ARG(Esys_Initialize),
-                                DLSYM_ARG(Esys_Load),
-                                DLSYM_ARG(Esys_PolicyGetDigest),
-                                DLSYM_ARG(Esys_PolicyPCR),
-                                DLSYM_ARG(Esys_StartAuthSession),
-                                DLSYM_ARG(Esys_Startup),
-                                DLSYM_ARG(Esys_Unseal),
-                                NULL);
-                if (r < 0)
-                        return r;
-
-                libtss2_esys_dl = TAKE_PTR(dl);
-                k++;
-        }
-
-        if (!libtss2_rc_dl) {
-                _cleanup_(dlclosep) void *dl = NULL;
-
-                dl = dlopen("libtss2-rc.so.0", RTLD_LAZY);
-                if (!dl)
-                        return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
-                                               "TPM2 support is not installed: %s", dlerror());
-
-                r = dlsym_many_or_warn(
-                                dl,
-                                LOG_DEBUG,
-                                DLSYM_ARG(Tss2_RC_Decode),
-                                NULL);
-                if (r < 0)
-                        return r;
-
-                libtss2_rc_dl = TAKE_PTR(dl);
-                k++;
-        }
-
-        if (!libtss2_mu_dl) {
-                _cleanup_(dlclosep) void *dl = NULL;
+        int r;
 
-                dl = dlopen("libtss2-mu.so.0", RTLD_LAZY);
-                if (!dl)
-                        return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
-                                               "TPM2 support is not installed: %s", dlerror());
-
-                r = dlsym_many_or_warn(
-                                dl,
-                                LOG_DEBUG,
-                                DLSYM_ARG(Tss2_MU_TPM2B_PRIVATE_Marshal),
-                                DLSYM_ARG(Tss2_MU_TPM2B_PRIVATE_Unmarshal),
-                                DLSYM_ARG(Tss2_MU_TPM2B_PUBLIC_Marshal),
-                                DLSYM_ARG(Tss2_MU_TPM2B_PUBLIC_Unmarshal),
-                                NULL);
-                if (r < 0)
-                        return r;
+        r = dlopen_many_sym_or_warn(
+                        &libtss2_esys_dl, "libtss2-esys.so.0", LOG_DEBUG,
+                        DLSYM_ARG(Esys_Create),
+                        DLSYM_ARG(Esys_CreatePrimary),
+                        DLSYM_ARG(Esys_Finalize),
+                        DLSYM_ARG(Esys_FlushContext),
+                        DLSYM_ARG(Esys_Free),
+                        DLSYM_ARG(Esys_GetRandom),
+                        DLSYM_ARG(Esys_Initialize),
+                        DLSYM_ARG(Esys_Load),
+                        DLSYM_ARG(Esys_PolicyGetDigest),
+                        DLSYM_ARG(Esys_PolicyPCR),
+                        DLSYM_ARG(Esys_StartAuthSession),
+                        DLSYM_ARG(Esys_Startup),
+                        DLSYM_ARG(Esys_Unseal));
+        if (r < 0)
+                return r;
 
-                libtss2_mu_dl = TAKE_PTR(dl);
-                k++;
-        }
+        r = dlopen_many_sym_or_warn(
+                        &libtss2_rc_dl, "libtss2-rc.so.0", LOG_DEBUG,
+                        DLSYM_ARG(Tss2_RC_Decode));
+        if (r < 0)
+                return r;
 
-        return k;
+        return dlopen_many_sym_or_warn(
+                        &libtss2_mu_dl, "libtss2-mu.so.0", LOG_DEBUG,
+                        DLSYM_ARG(Tss2_MU_TPM2B_PRIVATE_Marshal),
+                        DLSYM_ARG(Tss2_MU_TPM2B_PRIVATE_Unmarshal),
+                        DLSYM_ARG(Tss2_MU_TPM2B_PUBLIC_Marshal),
+                        DLSYM_ARG(Tss2_MU_TPM2B_PUBLIC_Unmarshal));
 }
 
 struct tpm2_context {