src/share/classes/org/openjdk/jigsaw/cli/Signer.java

Print this page

        

@@ -38,10 +38,11 @@
 import javax.security.auth.DestroyFailedException;
 
 import static java.lang.System.err;
 import static java.lang.System.in;
 import static java.lang.System.out;
+import java.nio.channels.Channels;
 import static java.security.KeyStore.PasswordProtection;
 import static java.security.KeyStore.PrivateKeyEntry;
 import java.util.Map;
 
 import org.openjdk.jigsaw.*;

@@ -245,15 +246,18 @@
             File tmpFile = (signedModuleFile == null)
                 ? new File(moduleFile + ".sig") : signedModuleFile;
             try (RandomAccessFile mraf = new RandomAccessFile(moduleFile, "r");
                  RandomAccessFile raf = new RandomAccessFile(tmpFile, "rw"))
             {
+                ModuleFileHeader header = ModuleFileHeader.read(Channels.newInputStream(mraf.getChannel()));
+
+                mraf.seek(0);
                 raf.setLength(0);
 
                 // Transfer header and module-info from module file
                 // to signed module file.
-                long remainderStart = ModuleFileHeader.LENGTH
+                long remainderStart = header.getLength()
                                       + SectionHeader.LENGTH
                                       + moduleInfoLength;
                 FileChannel source = mraf.getChannel();
                 FileChannel dest = raf.getChannel();
                 for (long pos = 0; pos < remainderStart;) {