fix: archive2 alignment

This commit is contained in:
Ax333l 2023-04-25 17:34:54 +02:00
parent 61b3b6aee5
commit 7582c132f9
No known key found for this signature in database
GPG Key ID: D2B4D85271127D23

View File

@ -29,7 +29,6 @@ public class ZipAligner {
private final Map<Pattern, Integer> alignmentMap; private final Map<Pattern, Integer> alignmentMap;
private int defaultAlignment; private int defaultAlignment;
private boolean enableDataDescriptor; private boolean enableDataDescriptor;
private long mTotalPadding;
private long mCurrentOffset; private long mCurrentOffset;
public ZipAligner(){ public ZipAligner(){
@ -55,7 +54,6 @@ public class ZipAligner {
this.defaultAlignment = defaultAlignment; this.defaultAlignment = defaultAlignment;
} }
public void reset(){ public void reset(){
mTotalPadding = 0;
mCurrentOffset = 0; mCurrentOffset = 0;
} }
public void setEnableDataDescriptor(boolean enableDataDescriptor) { public void setEnableDataDescriptor(boolean enableDataDescriptor) {
@ -63,15 +61,15 @@ public class ZipAligner {
} }
void align(InputSource inputSource, LocalFileHeader lfh){ void align(InputSource inputSource, LocalFileHeader lfh){
lfh.setExtra(null);
int padding; int padding;
if(inputSource.getMethod() != ZipEntry.STORED){ if(inputSource.getMethod() != ZipEntry.STORED){
padding = 0; padding = 0;
createDataDescriptor(lfh); createDataDescriptor(lfh);
}else { }else {
int alignment = getAlignment(inputSource.getAlias()); int alignment = getAlignment(inputSource.getAlias());
long newOffset = mCurrentOffset + mTotalPadding; long dataOffset = mCurrentOffset + lfh.countBytes();
padding = (int) ((alignment - (newOffset % alignment)) % alignment); padding = (int) ((alignment - (dataOffset % alignment)) % alignment);
mTotalPadding += padding;
} }
lfh.setExtra(new byte[padding]); lfh.setExtra(new byte[padding]);
mCurrentOffset += lfh.getDataSize() + lfh.countBytes(); mCurrentOffset += lfh.getDataSize() + lfh.countBytes();