Skip to content

Commit

Permalink
Code analysis cleanup and #435 mistake? (#458)
Browse files Browse the repository at this point in the history
* Fixup #435: Add null check when getting and applying Windows file attributes

* Clean up raw types

Co-authored-by: Shane Parris <s@zd.is>
  • Loading branch information
slp091020 and Shane Parris committed Sep 8, 2022
1 parent 5013235 commit 4aaa10a
Show file tree
Hide file tree
Showing 10 changed files with 18 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

abstract class DecompressedInputStream extends InputStream {

private CipherInputStream cipherInputStream;
private CipherInputStream<?> cipherInputStream;
protected byte[] oneByteBuffer = new byte[1];

public DecompressedInputStream(CipherInputStream cipherInputStream) {
public DecompressedInputStream(CipherInputStream<?> cipherInputStream) {
this.cipherInputStream = cipherInputStream;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class InflaterInputStream extends DecompressedInputStream {
private byte[] singleByteBuffer = new byte[1];
private int len;

public InflaterInputStream(CipherInputStream cipherInputStream, int bufferSize) {
public InflaterInputStream(CipherInputStream<?> cipherInputStream, int bufferSize) {
super(cipherInputStream);
this.inflater = new Inflater(true);
buff = new byte[bufferSize];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@

import java.io.IOException;

class NoCipherInputStream extends CipherInputStream {
class NoCipherInputStream extends CipherInputStream<NoCipherInputStream.NoDecrypter> {

public NoCipherInputStream(ZipEntryInputStream zipEntryInputStream, LocalFileHeader localFileHeader,
char[] password, int bufferSize) throws IOException {
super(zipEntryInputStream, localFileHeader, password, bufferSize, true);
}

@Override
protected Decrypter initializeDecrypter(LocalFileHeader localFileHeader, char[] password, boolean useUtf8ForPassword) {
protected NoDecrypter initializeDecrypter(LocalFileHeader localFileHeader, char[] password, boolean useUtf8ForPassword) {
return new NoDecrypter();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class StoreInputStream extends DecompressedInputStream {

public StoreInputStream(CipherInputStream cipherInputStream) {
public StoreInputStream(CipherInputStream<?> cipherInputStream) {
super(cipherInputStream);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,11 @@ private void endOfCompressedDataReached() throws IOException {

private DecompressedInputStream initializeEntryInputStream(LocalFileHeader localFileHeader) throws IOException {
ZipEntryInputStream zipEntryInputStream = new ZipEntryInputStream(inputStream, getCompressedSize(localFileHeader));
CipherInputStream cipherInputStream = initializeCipherInputStream(zipEntryInputStream, localFileHeader);
CipherInputStream<?> cipherInputStream = initializeCipherInputStream(zipEntryInputStream, localFileHeader);
return initializeDecompressorForThisEntry(cipherInputStream, localFileHeader);
}

private CipherInputStream initializeCipherInputStream(ZipEntryInputStream zipEntryInputStream,
private CipherInputStream<?> initializeCipherInputStream(ZipEntryInputStream zipEntryInputStream,
LocalFileHeader localFileHeader) throws IOException {
if (!localFileHeader.isEncrypted()) {
return new NoCipherInputStream(zipEntryInputStream, localFileHeader, password, zip4jConfig.getBufferSize());
Expand All @@ -266,7 +266,7 @@ private CipherInputStream initializeCipherInputStream(ZipEntryInputStream zipEnt
}
}

private DecompressedInputStream initializeDecompressorForThisEntry(CipherInputStream cipherInputStream,
private DecompressedInputStream initializeDecompressorForThisEntry(CipherInputStream<?> cipherInputStream,
LocalFileHeader localFileHeader) throws ZipException {
CompressionMethod compressionMethod = getCompressionMethod(localFileHeader);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

abstract class CompressedOutputStream extends OutputStream {

private CipherOutputStream cipherOutputStream;
private CipherOutputStream<?> cipherOutputStream;

public CompressedOutputStream(CipherOutputStream cipherOutputStream) {
public CompressedOutputStream(CipherOutputStream<?> cipherOutputStream) {
this.cipherOutputStream = cipherOutputStream;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class DeflaterOutputStream extends CompressedOutputStream {
private byte[] buff;
protected Deflater deflater;

public DeflaterOutputStream(CipherOutputStream cipherOutputStream, CompressionLevel compressionLevel, int bufferSize) {
public DeflaterOutputStream(CipherOutputStream<?> cipherOutputStream, CompressionLevel compressionLevel, int bufferSize) {
super(cipherOutputStream);
deflater = new Deflater(compressionLevel.getLevel(), true);
buff = new byte[bufferSize];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class StoreOutputStream extends CompressedOutputStream {

public StoreOutputStream(CipherOutputStream cipherOutputStream) {
public StoreOutputStream(CipherOutputStream<?> cipherOutputStream) {
super(cipherOutputStream);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,11 @@ private void writeSplitZipHeaderIfApplicable() throws IOException {

private CompressedOutputStream initializeCompressedOutputStream(ZipParameters zipParameters) throws IOException {
ZipEntryOutputStream zipEntryOutputStream = new ZipEntryOutputStream(countingOutputStream);
CipherOutputStream cipherOutputStream = initializeCipherOutputStream(zipEntryOutputStream, zipParameters);
CipherOutputStream<?> cipherOutputStream = initializeCipherOutputStream(zipEntryOutputStream, zipParameters);
return initializeCompressedOutputStream(cipherOutputStream, zipParameters);
}

private CipherOutputStream initializeCipherOutputStream(ZipEntryOutputStream zipEntryOutputStream,
private CipherOutputStream<?> initializeCipherOutputStream(ZipEntryOutputStream zipEntryOutputStream,
ZipParameters zipParameters) throws IOException {
if (!zipParameters.isEncryptFiles()) {
return new NoCipherOutputStream(zipEntryOutputStream, zipParameters, null);
Expand All @@ -215,7 +215,7 @@ private CipherOutputStream initializeCipherOutputStream(ZipEntryOutputStream zip
}
}

private CompressedOutputStream initializeCompressedOutputStream(CipherOutputStream cipherOutputStream,
private CompressedOutputStream initializeCompressedOutputStream(CipherOutputStream<?> cipherOutputStream,
ZipParameters zipParameters) {
if (zipParameters.getCompressionMethod() == CompressionMethod.DEFLATE) {
return new DeflaterOutputStream(cipherOutputStream, zipParameters.getCompressionLevel(), zip4jConfig.getBufferSize());
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/lingala/zip4j/util/FileUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -469,11 +469,11 @@ private static void applyWindowsFileAttributes(Path file, byte[] fileAttributes)

DosFileAttributeView fileAttributeView = Files.getFileAttributeView(file, DosFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);

//IntelliJ complains that fileAttributes can never be null. But apparently it can.
//IntelliJ complains that fileAttributeView can never be null. But apparently it can.
//See https://github.com/srikanth-lingala/zip4j/issues/435
//Even the javadoc of Files.getFileAttributeView says it can be null
//noinspection ConstantConditions
if (fileAttributes == null) {
if (fileAttributeView == null) {
return;
}

Expand Down

0 comments on commit 4aaa10a

Please sign in to comment.