(byte[] extra, int header)
| 92 | } |
| 93 | |
| 94 | public static byte[] remove(byte[] extra, int header) throws IOException { |
| 95 | int offset = 0; |
| 96 | while (extra.length - offset >= 4) { |
| 97 | int h = ZipUtil.readUShort(extra, offset); |
| 98 | int size = ZipUtil.readUShort(extra, offset + 2); |
| 99 | offset += 4; |
| 100 | if (size > extra.length - offset) |
| 101 | return extra; |
| 102 | if (h != header) { |
| 103 | offset += size; |
| 104 | } else { |
| 105 | offset -= 4; |
| 106 | size += 4; |
| 107 | byte[] bytes = new byte[extra.length - size]; |
| 108 | System.arraycopy(extra, 0, bytes, 0, offset); |
| 109 | System.arraycopy(extra, offset + size, bytes, offset, extra.length - size - offset); |
| 110 | return bytes; |
| 111 | } |
| 112 | } |
| 113 | return extra; |
| 114 | } |
| 115 | |
| 116 | public static ExtraDataRecord find(byte[] extra, int header) throws IOException { |
| 117 | int offset = 0; |
no test coverage detected