From 77226cb412822dc7614037c6d9225d98e64d4a55 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=D0=BD=D0=B0=D0=B1?= Date: Wed, 27 Apr 2022 18:46:58 +0200 Subject: [PATCH] perf(dracut-install): don't reallocate {src,dst}path in hmac_install() --- src/install/dracut-install.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c index 5944daa43..070307456 100644 --- a/src/install/dracut-install.c +++ b/src/install/dracut-install.c @@ -628,14 +628,9 @@ static int resolve_deps(const char *src) /* Install "..hmac" file for FIPS self-checks */ static int hmac_install(const char *src, const char *dst, const char *hmacpath) { - _cleanup_free_ char *srcpath = strdup(src); - _cleanup_free_ char *dstpath = strdup(dst); _cleanup_free_ char *srchmacname = NULL; _cleanup_free_ char *dsthmacname = NULL; - if (!(srcpath && dstpath)) - return -ENOMEM; - size_t dlen = dir_len(src); if (endswith(src, ".hmac")) @@ -648,16 +643,14 @@ static int hmac_install(const char *src, const char *dst, const char *hmacpath) hmac_install(src, dst, "/lib64/hmaccalc"); } - srcpath[dlen] = '\0'; - dstpath[dir_len(dst)] = '\0'; if (hmacpath) { _asprintf(&srchmacname, "%s/%s.hmac", hmacpath, &src[dlen + 1]); _asprintf(&dsthmacname, "%s/%s.hmac", hmacpath, &src[dlen + 1]); } else { - _asprintf(&srchmacname, "%s/.%s.hmac", srcpath, &src[dlen + 1]); - _asprintf(&dsthmacname, "%s/.%s.hmac", dstpath, &src[dlen + 1]); + _asprintf(&srchmacname, "%.*s/.%s.hmac", (int)dlen, src, &src[dlen + 1]); + _asprintf(&dsthmacname, "%.*s/.%s.hmac", (int)dir_len(dst), dst, &src[dlen + 1]); } - log_debug("hmac cp '%s' '%s')", srchmacname, dsthmacname); + log_debug("hmac cp '%s' '%s'", srchmacname, dsthmacname); dracut_install(srchmacname, dsthmacname, false, false, true); return 0; } -- 2.47.2