package org.jetbrains.android.util; import com.android.jarutils.SignedJarBuilder; import com.intellij.openapi.util.io.FileUtil; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.cert.X509Certificate; /** * @author Eugene.Kudelevsky */ public class SafeSignedJarBuilder extends SignedJarBuilder { private final String myOutFilePath; public SafeSignedJarBuilder(FileOutputStream outputStream, PrivateKey key, X509Certificate certificate, String outFilePath) throws IOException, NoSuchAlgorithmException { super(outputStream, key, certificate); myOutFilePath = FileUtil.toSystemDependentName(outFilePath); } @Override public void writeFile(File inputFile, String jarPath) throws IOException { if (FileUtil.pathsEqual(inputFile.getPath(), myOutFilePath)) { throw new IOException("Cannot pack file " + myOutFilePath + " into itself"); } super.writeFile(inputFile, jarPath); } }