]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sbsign: Copy source to dest later
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 26 Feb 2025 09:14:56 +0000 (10:14 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 27 Feb 2025 09:03:42 +0000 (10:03 +0100)
Preparation for later commit.

src/sbsign/sbsign.c

index 6f4845135fbd2f23468e3a4f34b594ed8fb18b81..ec38d185a6955ed2d43b4b388b2a2e06341b7a49 100644 (file)
@@ -258,13 +258,9 @@ static int verb_sign(int argc, char *argv[], void *userdata) {
         if (r < 0)
                 log_debug_errno(r, "Failed to change temporary file mode: %m");
 
-        r = copy_bytes(srcfd, dstfd, UINT64_MAX, COPY_REFLINK);
-        if (r < 0)
-                return log_error_errno(r, "Failed to copy %s to %s: %m", argv[1], tmp);
-
         _cleanup_free_ void *hash = NULL;
         size_t hashsz;
-        r = pe_hash(dstfd, EVP_sha256(), &hash, &hashsz);
+        r = pe_hash(srcfd, EVP_sha256(), &hash, &hashsz);
         if (r < 0)
                 return log_error_errno(r, "Failed to hash PE binary %s: %m", argv[0]);
 
@@ -411,6 +407,10 @@ static int verb_sign(int argc, char *argv[], void *userdata) {
         if (!certificate_table)
                 return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "File lacks certificate table.");
 
+        r = copy_bytes(srcfd, dstfd, UINT64_MAX, COPY_REFLINK);
+        if (r < 0)
+                return log_error_errno(r, "Failed to copy %s to %s: %m", argv[1], tmp);
+
         off_t end = st.st_size;
         ssize_t n;