ARK 라이브러리 변경 사항
버전
날짜
변경 내용
7.36.0.1
2024/6/25
- RAR7 포맷 해제 기능 추가 (ARK_COMPRESSION_METHOD_RAR70, SArkProps::maxDictSizeAllowed, ARKERR_DICT_SIZE_OVER 추가)
- RAR/RAR5 포맷에서 발생하는 KVE-2024-0290 보안 문제 수정
- LZ4 포맷 해제 기능 추가
- 7z/rar 포매의 해제 시 ARK의 자체 버퍼 출력 사용하지 않도록 수정
- 코드페이지 자동인식 기능에서 CP_UTF7 은 무시하도록 수정
- libz 1.22.11 -> 1.3, libunrar 6.2.10 -> 7.0.8 업데이트
- ZIP 파일의 내부 파일 삭제 과정에서, 전체 파일이 삭제된 경우 ARKERR_NOFILE_TO_ARCHIVE 대신 ARKERR_ALLFILE_DELETED 리턴하도록 수정
- 구글 드라이브의 오피스 파일 확장자는 파일을 오픈하는 과정에서 바로 읽기 가능한지 체크하는 기능 추가
- TAR 생성 과정에서 패딩 바이트를 1바이트씩 처리하는 문제로 시간 오래 걸리는 버그 수정
- Windows에서 TAR 포맷으로 압축할 때 USTAR 헤더 쓰기 기능 추가
- SArkCompProps::_no_file_time_ 추가
- 파일 앞 더미 데이터의 크기가 큰 ZIP64 파일을 열지 못하는 버그 수정
- ZIP 파일의 병렬 압축 해제 과정에서 콜백 함수에 취소를 리턴하면 다른 파일이 손상되는 경우가 있는 버그 수정
- ZIP 파일의 병렬 압축 해제 과정에서 성공한 경우에만 출력 파일의 파일시간 및 속성을 변경 처리하도록 수정
- GZ 파일의 코멘트를 처리하지 못하는 버그 수정
- 기타
7.31.0.1
2023/3/9
- 지원 Windows OS 변경(Windows 7 이상)
- SArkDetectCodepage 및 IArk::DetectCurrentArchivesCodepage() 삭제 및 해당 기능 지원 중단
- ASAR 포맷 해제 기능 추가(ARK_FF_ASAR)
- 일부 info-zip으로 암호를 걸어 압축한 파일이 손상된 경우 파일 목록을 제대로 열지 못하는 버그 수정
- 일부 ZIP 포맷의 압축 해제 진행 처리가 정상 처리되지 않는 버그 수정
- 빈 암호("")로 암호화된 ZPAQ 파일을 열지 못하는 버그 수정
- 일부 ZIP 파일의 뒷부분에 더미 데이터가 있는 경우 손상된 파일로 잘못 인식하는 버그 수정
- 일부 손상된 ZIP 파일의 로컬 헤더에서 DATA DESCRIPTOR SIGNATURE를 제대로 처리 못 하는 버그 수정
- 일부 손상된 ZIP 파일을 여는 과정에서 무한 루프에 빠질 수 있는 버그 수정
- 기타
7.28.0.3
2022/11/15
- Read Only 속성을 가진 파일의 압축을 풀 때 Zone.Identifier 정보를 쓰지 못하는 버그 수정
- UUE/UU/XXE 포맷의 파일 앞쪽에 더미 데이터가 있어도 UUE/UU/XXE 포맷으로 처리하도록 개선
- SArkProps::bOpenArchiveWithShareDelete 없애고 SArkProps::dwReadFileShareMode 추가
- 기타
7.28.0.2
2022/10/12
- PEA 포맷의 해제 기능 추가 및 ARK_FF_PEA 추가
- MAC OS 에서 생성한 리소스 포크 파일의 처리 방식 개선
- CPU 논리코어가 32개가 넘어가면 ZPAQ 압축 해제 도중 크래시 발생 버그 수정
- POSIX 환경에서 일무 문자열 처리 도중 메모리 오버플로우 버그 수정
- 빈 문자열("") 암호 지원 기능 추가
- 기타
7.28.0.1
2022/8/1
- UUE/XXE 포맷의 해제 기능 추가
- SArkProps::arkFlags 추가
- SArkProps::sevenZipLzmaExtNumThreads 추가
- ZPAQ 압축 도중 발생하는 문제 수정 및 개선
- EGG 파일 뒤에 더미 바이트가 있으면 오류가 발생하는 버그 수정
- ZIP 파일에 잘못된 unix 폴더 속성이 있는 경우 무시하도록 기능 추가
- J2J 포맷 지원 기능 강화
- 8G 넘는 TAR 파일을 제대로 처리하지 못하는 버그 수정
- LZMASDK liblzma-21.07 업데이트
- ARK_COMPRESSION_METHOD_REFERENCE 추가 및 zipx 의 reference 압축 알고리즘 해제 지원 기능 추가
- ARK_COMPRESSION_METHOD_MP3 추가 및 zipx 의 MP3 압축 알고리즘 해제 지원 기능 추가
- UDF 파일의 EXTENTLEN_TYPE_1 파일 처리 기능 추가
- 스파스로 압축한 TAR 파일의 압축 해제시 NTFS 에서 SPARSE 파일이 생성되도록 기능 추가
- 기타
7.23.0.3
2021/12/13
- GZIP 파일에서 발생하는 보안 문제 수정(KVE-2021-0517)
7.23.0.2
2021/12/1
- KVE-2021-1018, KVE-2021-1019 문제 수정
- TAR 파일의 심볼릭 링크 파일명에 ":" 등이 포함되어 있는 경우 WIN32 에서 파일을 생성하지 못하는 버그 수정
- 병렬 해제 수행 후 스레드 종료를 기다리는 시간이 오래걸리는 문제 수정
7.23.0.1
2021/11/29
- 일부 센트럴 헤더가 손상된 ZIP 파일도 열 수 있도록 개선
- ZPAQ 포맷을 처리하는 과정에서 발생하는 핸들릭 문제 수정
- ZIP 포맷의 병렬 해제 기능 개선 및 버그 수정
- 하드링크 정보가 포함된 TAR 파일의 압축 해제 진행 정보가 100% 가 안되는 버그 수정
- 병렬 압축 해제 중 취소를 하면 간혹 크래시 발생하는 버그 수정
- 7z 포맷의 파일에 Unix mode 속성이 있을경우, 압축 풀 때 해당 정보를 복구하는 기능 추가
- Linux 2.6 에서 빌드한 64비트용 SO 파일 추가
- 기타
7.20.0.1
2021/10/6
- libzpaq 7.13 -> 7.15 업데이트
- ZIP 파일명의 NFD 체크중 널포인터 문제로 죽을 수 있는 버그 수정
- ARC/TGZ/TBZ/XZ/Z/LZMA 파일의 압축 해제 진행률이 특정 조건에서 100% 가 안되는 버그 수정
- 압축 해제 중 ZIP 파일에 저장된 맥의 리소스 포크 파일 처리 기능 추가 및 SArkProps::zipApplyResourceFork2File 추가
- 스트리밍 형태의 ZPAQ 의 파일명이 깨지는 버그 수정
- ZIP 파일의 DATA DESCRIPTOR 에만 파일 정보가 있는 ZIP 파일의 복구 기능 개선
- ZIP 포맷에 대한 병렬 압축 해제 기능 추가 및 SArkProps::useParallelExtraction, SArkProps::parallelExtThreadCount 추가
- IArkSimpleOutStream::SetPos() 추가
- 일부 조작된 NSIS 포맷에서 오버플로우가 발생하는 버그 수정
- 일부 NSIS 파일을 열지 못하는 버그 수정
- 일부 분할 ZIP 파일을 열지 못하는 버그 수정
- 일부 헤더가 조작된 TAR 포맷에서 크래시가 발생할 수 있는 버그 수정(KVE-2021-1017)
7.17.0.3
2021/5/3
- IArkCompressor::CreateArchive() 호출할 때, 압축하려는 파일이 모두 잠겨있어 빈 압축파일이 생성될 상황이면 FALSE 를 리턴하고 IArkCompressor::GetLastError() 는 ARKERR_NOFILE_TO_ARCHIVE 를 리턴하도록 수정
- 코멘트가 있고 비어 있는 ZIP 파일을 분할 압축된 ZIP 파일로 잘못 인식하는 버그 수정
7.17.0.1
2021/4/20
- ARK_FF_DAA 추가 + DAA 포맷(V1.0) 압축 해제 기능 추가
7.16.0.2
2021/3/29
- 파일명이 손상된 ISO 파일의 UTF16 파일명을 UTF32 로 바꾸는 과정에서 크래시 발생 버그 수정 (POSIX)
- ZIP 파일의 폴더에 대한 심볼릭 링크의 압축 해제를 제대로 처리하지 못하는 버그 수정 (Win32)
- HAOZIP의 전용 분할 압축 (论坛专用分卷, .haozip01.zip, .haozip01.7z) 스타일(ARK_MULTIVOL_STYLE_HAOZIP)의 압축해제 기능 추가
- LZMA 알고리즘으로 압축하는 도중 쓰기 에러 발생하면 버퍼 오버플로우로 크래시 발생하는 버그 수정
- 압축 파일을 생성하는 과정에서 쓰기 에러가 발생하여도 특정 조건에서 오류 처리가 안되는 버그 수정
- 기타
7.16.0.1
2021/3/15
- 7Z 포맷의 LZ4/LZ5/LIZARD/DEFLATE64 압축 알고리즘 해제 지원 기능 추가
- ZIP 포맷의 ZSTD 압축 알고리즘에 대한 압축 해제 기능 추가(ARK_COMPRESSION_METHOD_ZSTD)
- RAR5 포맷의 junction 폴더를 처리하는 기능 추가
- TAR 포맷으로 압축할 때, 하드 링크 정보 저장하는 기능 추가 (SArkCompProps::tarProcessHardLink)
- ZIP 포맷을 처리하는 과정에서, 로컬 헤더에 파일명이 없어도 정상적으로 처리하도록 개선
- UDF 포맷의 압축 해제 속도 향상
- TAR 포맷의 심볼릭 링크를 생성할 때, 심볼릭 링크 경로가 절대 경로이면 상대 경로로 바꾸는 기능 추가
- IArk::ExtractAllTo() 메소드에 path2remove 파라미터 추가
- 헤더가 암호화된 RAR5를 열 때, 암호가 틀리면 ARKERR_AT_READ_CONTAINER_HEADER를 리턴하던 것을 ARKERR_INVALID_PASSWD 리턴하도록 수정
- 헤더가 암호화된 RAR5를 열 때, 암호가 세팅되지 않았으면 ARKERR_PASSWD_NOT_SET을 리턴하고 끝나던 것을 콜백으로 암호 물어보도록 수정
- IArkCompressor::FindFileItemIndex2Add2() 메소드 호출 시 버퍼 오버플로 발생할 수 있는 버그 수정
- 압축 데이터가 손상된 ACE 포맷의 압축을 해제하는 과정에서 Divide by zero 크래시가 발생할 수 있는 버그 수정
- 헤더가 조작된 RAR5 포맷의 심볼릭 링크를 처리하는 과정에서 널 포인터 참조 크래시 발생할 수 있는 버그 수정
- 압축 데이터가 손상된 ALZ 포맷의 BZIP2 알고리즘 압축 해제 중 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 TAR 포맷의 심볼릭 링크를 처리하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 TAR 포맷을 처리하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 ZIP 포맷의 LZMA 알고리즘 압축을 해제하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 ARJ 포맷의 압축을 해제하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 RAR5 포맷의 압축을 해제하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 ALZ 포맷의 파일 목록을 읽는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 헤더가 조작된 BH 포맷의 압축을 해제하는 과정에서 버퍼 오버플로 발생할 수 있는 버그 수정
- 일부 분할 RAR/RAR5 의 처리를 잘못 처리하는 버그 수정
- 일부 UDF 포맷의 압축 해제를 처리하지 못하는 버그 수정
- DEFLATE 알고리즘으로 압축을 할 때, 간혹 프로그램이 크래시 되는 버그 수정
- 일부 ZIP 파일을 열지 못하고 크래시 발생하는 버그 수정
- 일부 헤더 손상된 TAR 파일을 열 때 프로그램 죽는 버그 수정
- ZIP 포맷으로 압축할 때, DOS를 타겟으로 하면 심볼릭 링크 정보가 저장 안되는 버그 수정
- ZIP 포맷으로 압축할 때, 심볼릭 링크 속성을 추가하는 과정에서 RWX 속성도 추가하도록 개선
- Compound 포맷의 압축을 푸는 과정에서 프로그래스 콜백을 호출 안하는 버그 수정
- 일부 Compound 포맷의 압축을 풀지 못하는 버그 수정
- TAR 포맷의 심볼릭 링크 압축 풀때, 폴더에 대한 심볼릭 링크명 끝에 "/" 가 들어가 있으면 풀지 못하는 버그 수정
- TAR 포맷으로 압축할 때 폴더에 대한 심볼릭 링크를 처리하지 못하는 버그 수정
- SArkCompProps::tarProcessSymbolicLink 가 TRUE 일때, 정상적으로 심볼릭 링크 생성 안되는 버그 수정
- 기타
7.13.0.3
2020/12/9
- IArk::CheckFormat() 에 NULL 을 파라미터로 전달하면 크래시 발생하는 버그 수정
- IArk::ExtractAllTo(LPCSTR), IArk::ExtractAllTo(LPCWSTR)에 NULL 을 파라미터로 전달하면 현재 폴더에 압축을 푸는 대신 IArk::TestArchive()를 호출한것과 동일하게 작동하도록 기능을 수정
- 기타
7.13.0.2
2020/12/2
- ZSTD, Brotli 압축 알고리즘을 사용한 7z 포맷의 압축을 해제하는 기능 추가
- NSIS 솔리드 압축 데이터 사이에 패딩 데이터가 있는 일부 구형 NSIS 포맷의 압축을 풀지 못하는 버그 수정
- 일부 BCJ 필터를 사용한 NSIS 포맷의 압축을 풀지 못하는 버그 수정
- 일부 UDF 포맷의 Allocation_Extent_Descriptor 를 처리하지 못하는 버그 수정
- IArkCompressor::SetArchiveFile(), IArkCompressor::RenameItem(), IArkCompressor::DeleteItem() API 복원
- RAR5 포맷의 폴더에 대한 심볼릭 링크/하드 링크/유닉스 심볼릭 링크 처리 기능 추가
- 심볼릭 링크를 생성할때 발생할 수 있는 보안 문제 수정
- TAR 포맷의 심볼릭 링크 처리 기능 개선
- Windows 10 build 14972 이상에서 UAC 상승 없이 심볼릭 링크 생성 가능하도록 개선 (SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)
- 현재 시간의 time_t 가 음수이면 예외 처리 과정에서 크래시 발생하는 버그 수정
- libunrar-5.8.4 -> libunrar-6.0.1 업데이트
- UDF 포맷의 아이템 인덱스 정보가 잘못된 경우, 잘못된 인덱스 참조로 크래시 발생하는 버그 수정
- ZIP 파일을 수정하는 과정에서 기존 ZIP 파일의 파일명이 nullptr 이면 크래시 발생하는 버그 수정
- LZMA 디코더를 LZMA SDK 에 포함된 어셈블리 코드로 변경하여 LZMA 압축 해제 속도 최대 2배 향상
- RAR5 의 분할 파일명이 RAR, R00, ... 형태이면 처리하지 못하는 버그 수정
- 맥에서 압축한 TAR 파일의 리소스 포크파일을 무시하는 기능 추가
- Apple Silicon 지원
- ARK_FF_XAR, ARK_FF_DMG 추가 (압축 해제는 지원 안함)
- POSIX 의 파일 입력 스트림을, 자체 버퍼를 이용한 스트림으로 처리하도록 개선
- 기타
7.10.0.1
2020/7/14
- SDK에 C# 예제 프로젝트 포함
7.9.0.1
2020/6/22
- libmspack-0.2 -> libmspack-0.10.1alpha 교체로 일부 CAB 파일의 LZX 알고리즘 압축 해제 중 죽는 문제 해결
- 압축을 할 때, 생성될 압축파일의 경로명이 260자를 넘어가면 파일을 생성하지 못하는 버그 수정
- 압축을 할 때, 최대 압축 스레드 수를 16에서 64로 변경
- TAR 포맷의 EXTENDED HEADER에 데이터가 2개 이상 있으면 제대로 처리하지 못해서 파일명이 이상해지는 버그 수정
7.7.0.1
2020/5/26
- CentOS 6.10 에서 빌드된 리눅스용 32비트 바이너리(bin.Linux-2.6.32-i686) 추가
- 처음 입력된 7Z 포맷의 암호가 틀렸을때 두번째 입력된 암호가 맞아도 에러가 발생하는 버그 수정
- TGZ 파일 열때 마지막 파일의 TarI_OnOpening() 에서 false 이면 크래시 발생하는 버그 수정
- Test() 메소드를 호출했을때 폴더에 대한 시간을 바꾸려고 시도하는 버그 수정
- SArkProps::setFoldertimeAfterExtraction 추가
- TAR 포맷의 extender header 의 keyword 가 path 가 아니라 mtime 등일 경우, 파일명으로 잘못 처리해서 파일명이 깨져서 처리되는 버그 수정
- tar.gz(solid) 의 harlink 를 처리하지 못하는 버그 수정
- 코드페이지 자동인식 상태에서는 MBCS 코멘트를 처리하지 못하는 버그 수정
- TAR 포맷의 하드링크가 서브 폴더에 있으면 처리하지 못하는 버그 수정
7.0
2020/3/9
- 다이나믹 라이브러리 파일명을 ark.<아키텍처>.
. . 형식으로 통일 - Windows XP 지원 종료
- C++11 을 지원하지 않는 구형 Linux 지원 종료
- POSIX 환경에서도 압축 기능 지원(ZIP, 7Z, TAR 포맷)
- POSIX 환경에서도 LGPL 라이브러리(ark.x64.lgpl.so)를 런타임에 로드하여 사용하는 기능 추가
- 라이브러리 폴더 및 파일명 교체
- 자체 모듈로 UDF 2.6 해제 기능 추가
- 자체 모듈로 NSIS 해제 기능 추가
- Brotli(br) 압축 해제 기능 추가
- 자체 모듈로 ACE 포맷 해제 지원 기능 추가
- ZSTD 포맷 해제 기능 추가
- 유닉스에서 압축한 RAR5 포맷의 파일 시간을 처리하지 못하는 버그 수정
- ARKERR_WARN_LOCKED_FILE_OPENED_TO_COMPR 추가
- 일부 압축 포맷에서 해제 진행 프로그래스가 엉터리로 표시되는 버그 수정
- TAR 포맷의 EXTENDED HEADER 로 긴 파일명 처리하는 기능 추가
- libunrar-5.7.3 -> libunrar-5.8.4 교체
- SArkProps::zipOpenStrategy 추가
- 분할 cab 파일을 경로명 없이 파일명만으로 열면 죽는 버그 수정
- 컴파일러 변경 (VS 2017 -> VS 2019)
- ZIP 파일에서 폴더아이템이 compsize 를 가지고 있는 경우, 어떤 종류의 편집을 하는 경우에도 크래시가 발생하는 버그 수정
- EXE 의 .RSRC 뿐만 아니라 UNKNOWN SECTION 에 대해서도 SFX 데이터 처리 기능을 추가
- SFX 파일중 EXE 의 .rcdata 에 NumberOfIdEntries 에 압축 데이터가 들어있는 경우 압축 파일 헤더를 찾지 못하는 버그 수정
- PKLITE 로 압축된 DOS ARJ SFX 파일 해제 기능 추가
- MSI 파일의 파일명에 공백이 있을 경우, 파일명이 깨지는 버그 수정
- COMPOUND 의 아이템 정보에 시간 정보가 전부 0 이면, 파일의 시간을 세팅하지 않도록 개선
- TAR 포맷의 하드링크 파일에 파일 크기 정보가 있을경우, 파일을 제대로 처리하지 못하는 버그 수정
- SArkCompProps::_7zSolidBlockSize 추가
- 7z 압축할 때 solid/non solid 상관 없이 폴더 단위로 처리하도록 구조 개편
- 7Z 압축할 때 non solid + aes + lzma 상태에서 손상된 압축 파일 생성하는 버그 수정
- SArkProps::useSetEndofFile2OutFile 기능 추가
- POSIX 에서 압축 파일 생성할 때 공백이 있는 폴더가 아닌 엉뚱한 폴더에 압축 파일이 생성되는 버그 수정
- LHA- PM1 압축 방식에 대한 디코딩 기능 추가
- SArkProps::tarForceUTF8FileName 기본값을 TRUE->FALSE 변경
- TAR 포맷 압축해제할 때 코드페이지를 자동 인식하도록 기능 추가
- zip 파일명에 ? 가 포함된 경우 무조건 코드페이지 경고 처리하는 버그 수정
- XZ 압축해제할 때, PROGRESS 가 100% 안되는 문제 수정.
- 분할 cab 파일을 경로명 없이 파일명만으로 열때, CArkMultiInFileStream::GetNextCabFileName() 에서 죽는 버그 수정
- SArkProps::openAllSplitVolume 추가
- SArkProps::openAllSplitVolume 켜져있으면 분할 CAB 의 일부 파일도 압축 해제할 수 있도록 수정
- 손상된 ISO 파일열때 하위 폴더 읽다 에러 발생하면 계속 시도하지 않고 멈추도록 개선
- IArk::ChangeArkFileName() 추가
- SArkProps::bShortenPathNameWhenTooLong 추가
- 솔리드 포맷을 해제할 때 마지막 아이템이 폴더이면 메모리 릭 발생하는 문제 수정
- RAR5에서 하드링크 속성(FSREDIR_HARDLINK) 속성의 파일의 처리 관련 버그 수정
- STDIO I/O 스트림의 최적화로 파일 I/O 속도 향상
- liblzma-16.02 -> liblzma-18.05 교체
- BIN 폴더를 bin.win32, bin.Linux.* 폴더로 구분
- POSIX 환경에서 ZIP/TAR 압축할 때 심볼릭 링크 처리 기능 추가
- SArkCompProps::zipOS, SArkCompProps::zipOSwhenUTF8, SArkCompProps::zipProcessSymbolicLink, SArkCompProps::caseSensitive, SArkCompProps::tarProcessSymbolicLink 추가
- SArkProps::zipProcessSymbolicLink, SArkProps::zipProcessStreamingZip, SArkProps::zipIgnoreAppleResourceFork, SArkProps::useThreadFileWrite, SArkProps::copyZoneIdentifierADS 추가
- IArkEvent::OnOpening() 에서 (LPCWSTR archivePathName, int archiveVol) 삭제, IArkEvent::OnOpeningMultivolArchive() 추가
- IArk::LoadArkLGPL(), IArk::IsEditable() 추가
- IArkCompressor::SetProps7z() 추가
- SArkFileItem::fileName 삭제
- POSIX 에서 심볼릭 링크 파일명이 100자 넘어갈때 LONGLINK 로 처리하는 기능 추가
- TAR 압축할 때 파일명이 512자 넘어가도 처리할 수 있도록 기능 추가
- TAR 압축 풀때, SYMLINK 의 LONGLINK 처리 기능 추가
- 하드링크 속성을 가지는 TAR 파일의 압축 해제 기능 추가
- 기타 많은 버그 수정과 개선 및 코드 리팩토링
6.26.0.1
2020/1/10
- SArkProps::zipOpenStrategy 추가
- 코드사인 방식 변경 (기존 SHA1+SHA2 를 SHA2 로만 사인)
- 분할 cab 파일을 경로명 없이 파일명만으로 열면 죽는 버그 수정
6.22.0.3
2019/6/20
- ALZ 포맷의 obfuscated deflate 알고리즘 압축 해제 지원 기능 추가
- ARJ 포맷의 GARBLE 암호화 해제 지원 기능 추가
- 7z 포맷의 압축 해제중 암호 걸린 파일의 암호를 물어볼때 사용자가 취소를 선택 하면 ARKERR_USER_ABORT_OR_CANCEL 대신 ARKERR_PASSWD_NOT_SET 을 리턴하도록 수정
- DOS에서 압축한 LZH SFX / 분할 RAR SFX / ARJ SFX를 해제하지 못하는 오류 수정
- 일부 손상된 ISO 파일을 제대로 열지 못하는 버그 수정
6.22.0.2
2019/3/29
- Ark6 SDK 에서 POSIX 지원 중단
- unacev2.dll 를 사용하지 않고, 자체적으로 ACE 포맷 압축 해제 기능 추가
- ARK_MULTIVOL_STYLE_ACE 추가, ARK_COMPRESSION_METHOD_ACE 삭제, ARK_COMPRESSION_METHOD_ACEBLOCKED 추가,
- 분할 압축된 ARJ의 경로명 구분자가 \ 가 아닌 / 이면 처리하지 못하는 버그 수정
- RAR5가 암호 틀린경우, 압축을 풀지 않고 IArkEvent::OnAskPassword() 를 다시 호출하도록 개선
- ZIP 파일의 앞부분에 더미 데이터가 4MB 이상 이여도 ZIP 파일로 인식하도록 개선
- RAR5에서 하드링크 속성(FSREDIR_HARDLINK) 속성의 파일의 압축을 풀지 못하는 버그 수정
- RAR5에서 하드링크 속성(FSREDIR_HARDLINK)이나 파일 카피(FSREDIR_FILECOPY) 인 파일의 파일 시간을 원본 시간으로 세팅하지 않는 버그 수정
- ZPAQ 압축 해제할 때 메모리 누수 버그 수정
- libunrar-5.6.5 -> libunrar-5.7.3 교체
- 압축 풀때 출력 스트림의 버퍼 크기를 4MB 고정적으로 사용하던것을 시스템 메모리에 따라 4MB~1MB 가변적으로 사용하도록 수정
- 일부 ISO 포맷의 파일 시간을 잘못 처리하는 버그 수정
- 기타
6.20.0.2
2019/2/12
- IArkCompressor::SetArchiveFile(), IArkCompressor::RenameItem(), IArkCompressor::DeleteItem() API 삭제
- SArkProps::bAzoSupport 기본값을 TRUE 로 변경
- EGG 포맷의 AZO 알고리즘 해제를 XUNAZO로 대체
- 맥 파인더에서 65535개 넘는 파일을 압축해서 생성된 ZIP 파일을 손상된 파일로 인식하지 않도록 개선
- LZMA 압축 알고리즘과 AES256 암호 알고리즘으로 ZIP 포맷을 압축할 때, useDosTime2PasswordCheck 가 TRUE 여서 해당 비트 플래그가 켜지면 7z 18.04 버전에서 풀지 못하는 문제 수정
- 암호걸린 7z 압축 풀때, 파일이 손상된 경우 간혹 크래시 되는 버그 수정
- 암호걸린 7z 압축 풀때, 사용자가 암호를 입력하지 않는 경우 에러 이벤트를 발생시키지 않는 버그 수정
- unrar 5.5.5 -> 5.6.5 교체
- 멀티 스레드로 deflate 압축할 때 동기화 문제로 크래시가 발생하는 버그 수정
- 일부 헤더가 손상된 NSIS 파일을 열 때 크래시 발생하는 버그 수정
6.18.0.2
2018/10/22
- ARM64 CPU 지원 (Ark64a.dll, Ark64algplv2.dll)
- ARKERR_DUPE_FILE_NAME 추가
- 빈 ZIP, ZIP64 파일을 손상된 파일로 인식하는 버그 수정
- RAR4 포맷의 파일 시간 확장 정보(LHD_EXTTIME) 처리 기능 추가
- IArkCompressor::FindFileItemIndex2Add2() 추가
- 파일명의 경로명 끝이 점(.) 으로 끝나는 파일을 압축하지 못하는 버그 수정
- SArkProps::copyZoneIdentifierADS 추가
- unacev2.dll 를 LoadLibrary()로 로드할 때, 경로명을 풀패스로 호출하도록 개선
- ZIP 파일 열때 센트럴 헤더가 손상된 경우, Open() 에서 FALSE 를 리턴하도록 수정 (ARKERR_AT_READ_CONTAINER_HEADER 에러)
6.14.2.1
2018/7/23
- ZIP 포맷의 센트럴 헤더가 손상되었을 때 로컬 헤더를 대신 분석하도록 하는 기준을 기존의 시그너처 손상 여부에서 End of central directory record의 "total number of entries in the central directory" 항목과 파일 목록 카운트를 비교하여 판단하도록 개선
6.14.1.1
2018/7/10
- IArkCompressor::AddFileItem2() 추가
6.14.0.1
2018/7/4
- 코드페이지 자동 인식 기능 사용 시(IArk::DetectCurrentArchivesCodepage() MBCS 코멘트도 같이 처리하는 기능 추가
- 코드페이지 자동 인식 기능 사용 시 변경된 코멘트 정보를 저장하지 않는 버그 수정
- 파일 I/O 처리 시 4K 클러스터 정렬 처리 모듈의 버그로, 일부 AES256 으로 암호화된 RAR5 포맷의 암호가 틀렸다며 압축을 풀지 못하는 버그 수정
- ARK_COMPRESSION_METHOD_LZ5 알고리즘으로 압축된 LZH 파일의 압축을 풀려고 하면 크래시 되는 버그를 ARKERR_UNKNOWN_COMPRESSION_METHOD 오류를 리턴하도록 수정
- 파일 뒤에 더미 데이터가 있는 ALZ 파일의 압축을 풀 때 에러 이벤트를 발생 시키지 않도록 개선
- SArkProps::tarForceUTF8FileName 추가
- IArkCompressor::AddFileItem() 로 추가된 폴더에 폴더 속성이 없는 문제 수정
- 솔리드 포맷의 7z 파일의 압축을 풀 때 ARKERR_USER_ABORT_OR_CANCEL 상황에서 E_FAIL을 리턴하지 않고, FALSE를 리턴하는 버그 수정
- TGZ, TBZ 파일을 솔리드 압축 파일로 풀 때, 사용자가 덮어쓰기에서 취소를 선택한 경우 바로 OnError(ARKERR_USER_ABORT_OR_CANCEL) 를 호출하지 않는 것을 바로 호출하도록 수정
- BZIP2 압축 해제할 때 파일 출력에서 에러 발생 시 에러 이벤트가 두 번 발생하지 않도록 개선
- IArkCompr::SetCodePage()에 잘못된 값(ARK_CP_UNKNOWN) 이 들어오면, 기본값으로 교정하는 코드 추가
- GZIP 파일 뒤쪽에 테일(CRC+크기 정보)이 없는 경우 압축 해제 시 에러 이벤트 발생하도록 수정
- 시놀로지 NAS에서 압축한 ZIP 파일의 파일명이 깨지는 버그 수정
- RAR5 포맷의 Redirect 속성을 가진 파일 중 symbolic link 와 hardlink 속성의 파일을 풀지 못하는 버그 수정
- ZIP 포맷으로 압축할 때 랜덤 솔트값이 랜덤하지 않아서 발생하는 보안 문제 수정
- Windows에서 심볼릭 링크 생성할 때 생성할 파일의 경로명이 너무 길어서 실패하는 경우는 UNC 로 다시 시도하도록 개선
- RAR5 포맷의 HIDDEN, READONLY 속성 등을 처리하지 못하는 버그 수정
- 헤더가 손상된 WAVPACK 압축 알고리즘의 압축 해제 중 프로그램이 크래시 되는 버그 수정 (두 군데)
- 솔리드로 압축된 RAR5 포맷의 파일에 RAW로 저장된 파일이 섞여 있을 경우 압축 해제 시 CRC 에러가 발생하는 버그 수정
- zlib 1.2.8를 최신 버전인 zlib 1.2.11로 업그레이드
- ACE 포맷에 저장된 DOS 시간을 time_t로 잘못 처리하고 있던 버그 수정
- ACE 포맷의 CRC 정보를 잘못 가져오는 버그 수정
- 분할 압축된 ACE 포맷의 파일 목록을 제대로 가져오지 못하는 버그 수정
6.8.0.2
2017/7/14
- CAB 포맷에서 압축 데이터가 중복 처리되어 저장되어 있는 경우 ExtractOneAs()/ExtractOneTo() 메소드가 정상 작동하지 않는 버그 수정
- CAB 포맷에서 압축 데이터가 중복 처리되어 저장되어 있는 경우 진행 상황 이벤트(OnProgressFile())가 정확하게 계산되지 않는 버그 수정
6.8.0.1
2017/6/27
- VMSF_DELTA 버퍼 오버플로우 문제가 수정된 unrar 5.5.5 적용 (https://www.exploit-db.com/exploits/42245/)
- ZPAQ 파일의 버전 히스토리를 전부 파일 목록으로 처리하는 기능 추가
- 다량(10만개 이상)의 파일이 포함된 ZIP 파일을 열때, 파일 목록 얻어오는 속도 최대 400% 향상
- 파일 읽기 처리를 4K 클러스터 단위로 맞춰서 처리 속도 향상
- DEFLATE 압축 해제할 때 첫 디코딩 버퍼 크기를 줄여서 압축 해제 속도 향상
- 중국어 코드페이지중 CP54936 지원 기능 추가
- ARKERR_CANT_RENAME_ARCHIVE, ARKERR_NOFILE_TO_ARCHIVE, ARKERR_TOOMANYFILE_TO_ARCHIVE 에러코드 추가
- ARKERR_USER_ABORTED 와 ARKERR_USER_CANCEL 에러코드를 ARKERR_USER_ABORT_OR_CANCEL 로 통일
- ARK_PASSWORD_RET enum 값에 ARK_PASSWORD_RET_UNDEF 추가
- GZ, XZ 압축할 파일이 2개 이상이면 ARKERR_TOOMANYFILE_TO_ARCHIVE 에러코드 리턴하도록 기능 추가
- IArk::DetectCurrentArchivesCodepage() 호출 중 특정 상황에서 NULL 포인터 참조로 죽는 버그 수정
- RAR 파일 초기화 부분에서 메모리가 부족한 경우 throw 를 캐치하지 않아서 프로그램이 죽을 수 있는 버그 수정
- ZIP 포맷중 LZMA 알고리즘을 사용한 파일의 압축 전 크기가 4GB가 넘는 파일의 압축을 풀지 못하는 버그 수정
- ZIP 파일 수정할 때 기존 파일을 덮어쓰는 경우 진행률이 100%가 되지 않는 버그 수정
- ZOPFLI 알고리즘으로 압축할 때 압축률이 0이하일때 에러가 발생하는 버그 수정
- 여러개의 GZ 블럭으로 구정된 TGZ 파일을 열지 못하는 버그 수정
- 압축 마무리 단계에서 사용자 중지를 호출한 경우 데드락에 걸리는 버그 수정
- 7Z 압축할 때 폴더의 시간정보를 제대로 저장하지 못하는 버그 수정
- 분할 압축 크기를 1바이트로 설정하면 내부 리커전 코드에서 스택 오버플로우로 죽는 버그 수정
- GZ, XZ, LZH, TAR, TGZ 압축할 때 압축할 파일 목록이 없으면 죽는 버그 수정.
- ISO 파일 처리할 때 MainVolDescIndex 가 배열 범위 벗어나는 경우 죽는 버그 수정
- 코드 페이지 자동인식하면 TAR/TGZ 에서 파일명이 ?로 처리되는 버그 수정
- 파일명 암호걸린 7Z 열때, 사용자가 취소를 해도 한번 더 암호를 물어보는 버그 수정
- SArkProps::bUseRAR5QuickOpen 기본값을 TRUE 에서 FALSE 로 수정
- 기타
6.0.1.2
2016/11/25
- 빈 ZIP64 파일을 분할 압축 ZIP 파일로 잘못 인식하는 버그 수정
- CAB 파일의 분할 압축 파일명이 재귀 반복되지 않도록 개선
6.0.0.1
2016/11/4
- SDK 라이선스 변경 및 IArk::Verify() 메소드 추가
- ARKERR 시작값을 0 이 아닌 0xa0000000 으로 변경 및 시스템 에러 발생시 WinError.h 에 정의된 값을 리턴하도록 개선
- FreeArc 지원 기능 삭제
- Arc 포맷 압축 해제 기능 추가
- 분할 ISO 파일(i00, i01, ... ) 지원 기능 추가
- Ark32LPGL.dll -> Ark32LPGLv2.dll 로 이름 변경
- MS Comound(MSI,DOC,XLS,PPT) 포맷 풀기 기능 추가
- ZIPX/EXE 압축시 XZ 압축 알고리즘 지원 기능 추가
- EGG 포맷의 LEA 암호화 알고리즘 지원 기능 추가
- TAR 헤더의 폴더 정보에 comp/uncomp 정보가 있는 경우 TGZ 압축 해제시 먹통되는 버그 수정
- 로컬헤더의 ZIP64 EXTRA FIELD 에 잘못된 파일 크기 정보가 들어 있을 경우 압축을 풀지 못하는 버그 수정
- 폴더, 파일명 앞의 공백을 _ 로 바꾸는 기능 삭제
- 멀티볼륨 rar,rar5 포맷의 압축 해제시, 중간 볼륨 파일이 손상된 경우 전체 파일의 끝까지 압축을 해제하지 않고 현재 볼륨의 끝에서 CRC 에러를 출력하고 멈추는 기능 추가
- ArkTest 프로젝트 개선
- 주석이 달린 GZIP 파일의 압축을 풀지 못하는 버그 수정
- ISO 생성시 경로명에 MBCS가 포함되면 프로그램이 간혹 죽는 버그 수정
- ZIP 포맷의 센트럴 헤더의 파일명 필드가 0 인 경우 죽는 버그 수정
- WinRar 3.0으로 압축한 압축 파일중 일부 파일이 압축된 크기정보가 -1 인 경우 오류가 발생하던것을 정상적으로 처리하도록 수정
- LZMA SDK 16.02 업데이트
- unrar 5.3.11 업데이트
- zlib 1.2.8 업데이트
- EGG 포맷의 끝에 더미 데이터가 추가된 경우 손상된 파일로 인식하던것을 손상된 파일로 인식하지 않도록 수정
- Deflate 알고리즘을 멀티 스레드로 압축시에도 bypassWhenUncompressible 옵션이 적용되도록 기능 추가
- 압축 해제시 기존의 300자 였던 최대 암호길이의 제한이 없어짐
- 10만개가 넘어가는 분할 zip 파일을 열지 못하는 버그 수정
- RAR5의 QUICK OPEN 지원 기능 추가
- Ark.h 의 Option을 Props 로 바꿈 (SArkCompressorOpt->SArkCompProps, SetOption()->SetProps())
- GZ/XZ 압축 기능 추가
- ARK_MAX_PATH 를 300 에서 512 로 늘림
- 11GB 가 넘는 J2J 파일을 열지 못하는 버그 수정
- CAB 포맷에서 0바이트 파일이 포함된 경우 일부 처리를 제대로 하지 못하는 버그 수정
- ARK_FILEATTR_SYMLINK 추가
- TAR 포맷 심볼릭 링크 지원 기능 추가
- LZIP 포맷 해제 기능 추가
- 폴더 생성시 FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_SYSTEM 속성을 복구하지 않는 버그 수정
- RAR5 압축 해제 속도 향상
- SPARSE TAR 파일 처리 기능 추가
- zopfli 압축 기능 추가(SArkCompProps::defaultUseZopfli)
- 20 바이트 짜리 GZIP 파일을 열지 못하는 버그 수정
- ZPAQ 포맷 해제 지원 기능 추가
- IArkEvent::OnAskPassword() 에 setPasswd 추가
- IArkEvent::OnStartFile 에 changeFullPathName 추가
- IArkEvent::OnAskOverwrite 에 changeLocalPathName 으로 변경
- 7Z 압축시 시스템의 메모리에 따라 자동으로 압축률 조절하는 기능 추가
- TAR 포맷 압축할 때 경로명이 512자를 넘어가면 오류처리를 하도록 기능 추가
- TAR 포맷 열때 심볼릭 링크 처리 부분이 느리던 버그 수정
- ZIP 포맷의 파일 아이템의 폴더 속성이 켜져 있어도, 압축크기/해제크기/CRC 정보등이 존재하면 파일로 처리하도록 기능 추가
- ISZ 포맷 및 분할 ISZ 압축 해제 기능 추가
- ZIPX 포맷의 XZ 압축 알고리즘 압축 해제 지원 추가 (ARK_COMPRESSION_METHOD_XZ)
- ZIP 포맷의 REDUCE 압축 알고리즘 압축 해제 지원 추가 (ARK_COMPRESSION_METHOD_REDUCE1 ~ ARK_COMPRESSION_METHOD_REDUCE4)
- AesCrypt(.AES) 해제기능 추가
- 파일 I/O 처리 기능 향상
- LZH 압축시 하드가 꽉차면 하드가 꽉찾다고 메시지 출력하도록 개선 + 출력 파일을 삭제하지 않던 버그 수정
- ISO 압축시 하드가 꽉차면 에러 메시지가 두번 호출되던 버그 수정
- ZIP 파일의 내부 파일명이 MAX_PATH*2 를 넘을 경우 ARKERR_INVALID_FILENAME_LENGTH 에러를 발생시키던것을 에러를 발생시키지 않도록 개선
- ZIP 파일 편집시 기존 파일의 progress 처리에 대한 100% 기준을 "압축 해제된" 크기로 처리하던걸, "압축된 데이터 크기"로 처리하도록 수정
- ZIP 파일 생성 version needed to extract 를 10에서 20으로 변경
- PKZIP 으로 헤더가 암호화 된 경우 ARKERR_NOT_SUPPORTED_FILEFORMAT 를 리턴하도록 기능 추가
- SFX 나 CRX 처럼 ZIP 앞에 물리적으로 더미 헤더가 있는 경우, 기존에는 무조건 로컬 헤더를 읽던 것을 일단 센트럴 헤더를 먼저 읽어서 처리해 보도록 개선
- ZIP 해제 모듈에서 분할크기가 4GB 넘은 분할 zip 에서 offset 이 4GB 를 넘어가는 파일의 처리를 제대로 못해서 압축을 풀지 못하는 버그 수정
- RAR 포맷의 파일 시간이 2038년을 넘어가는 경우, 압축 푼 파일의 파일 시간이 잘못 처리되는 버그 수정
- 원본 ZIP 파일 수정시 CopyStream 에서 진행률 잘못 처리되던 버그 수정
- 암호를 걸고 Store로 저장된 RAR5 파일의 압축을 해제하지 못하던 버그 수정
- MSZIP 알고리즘을 사용하고, 분할 압축된 CAB 포맷의 압축파일을 풀지 못하던 버그 수정
- 7Z포맷의 SWAP2, SWAP4 필터를 처리하지 못하던 버그 수정
- 4기가가 넘는 2개 이상의 파일을 ZIP/ZIPX/EXE 포맷으로 분할 압축시 헤더 정보를 잘못 읽어서 압축을 풀지 못하는 버그 수정
- 여러개의 gz파일이 물리적으로 합쳐진 형태의 gz 파일의 압축도 제대로 해제하는 기능 추가
- 일부 특이한 형태의 TAR 포맷을 처리하지 못하던 버그 수정
- ArkLib.h 에서 Win98 체크코드 삭제
- 7z 솔리드 압축시 마지막 입력 파일을 압축하고 바로 닫지 않던걸 처리가 끝나면 바로 닫도록 개선
- ISO 파일 생성시 최대 파일명 길이는 64자에서 107자로 늘림
- 확장자가 .rar 이 아닌 분할 압축된 rar 파일도 제대로 처리하도록 개선
- ExtractOneAs(...WCHAR resultPathName[ARK_MAX_PATH]) -> ExtractOneAs(... WCHAR* resultPathName, int resultPathNameLen) 로 변경
- 리소스에 패킹된 NSIS 파일도 열 수 있도록 개선
- ARK_FF_MP4 추가
- 7z 파일 압축 해제중 파일 Read() 에서 에러가 발생할 경우 에러 이벤트가 발생하지 않던 버그 수정
- 이동식 드라이브에서 파일 I/O 가 발생할 경우, 매 10MB 마다 플러시를 호출하도록 기능 추가
- 기타
5.0.6.7
2014/8/8
- ARK_COMPRESSION_METHOD_REDIR 추가
- ARKERR_CANT_OPEN_SRC_FILE_TO_COPY 추가
- RAR5의 redirect 속성 처리 기능 추가
- NSIS 해제시 간혹 데드락 걸리는 버그 수정
- RAR 압축 해제시 128자가 넘는 암호를 쓰면 여전히 버퍼 오버플로우 발생하던 버그 수정
- ZIP으로 압축한 파일에 동일한 이름의 파일을 추가하려고 할 때 표시되는 중복확인창에서 기존 파일의 파일시간을 제대로 보여주지 못하는 버그 수정
5.0.5.6
2014/4/29
- ARK_FF_RAR5 추가 및 RAR5 압축 해제 지원
- 폴더가 순환참조하도록 잘못 만들어진 ISO 파일에서 재귀가 발생하지 않도록 수정
- RAR 파일의 압축 암호가 128자가 넘어가는 경우 버퍼 오버플로우가 발생하던 버그 수정
- GZIP 파일의 뒤에 더미로 0 이 포함되면 풀지 못하던 버그 수정
- TAR 포맷의 폴더 속성이 잘못 저장된 경우 풀지 못하던 버그 수정
- 폴더에 Hidden 속성이 있는 경우 압축 푼 폴더에도 Hidden 속성이 적용되도록 기능 추가
- IArk::Open(LPCWSTR _szPathName, DWORD& error, WCHAR resultPathName[ARK_MAX_PATH]) 호출시 결과 경로명이 ARK_MAX_PATH 를 넘어갈 경우 크래시 되는 버그 수정
- ZIP64 포맷에서 numberOfThisDisk 가 0xffff 인 경우 파일을 열지 못하던 버그 수정
- 7Z 압축시 메모리가 부족한 경우, 내부적으로 메모리 사용량을 줄여서 다시 압축을 시도하던 코드 때문에 발생하던 문제 수정
- ARK_FF_COMPOUND 추가 및 MSI 파일을 ARK_FF_CAB 으로 인식하지 않도록 수정
5.0.2.3
2013/5/28
- 보안 버그 수정
5.0.1.2
2013/5/16
- 솔리드 압축된 RAR 파일에 STORE 로 저장된 파일이 포함된 경우 압축을 풀지 못하던 버그 수정
- EGG 파일을 솔리드 형태로 압축할 때 빈 폴더가 포함된 경우 압축을 해제하지 못하던 버그 수정
5.0.0.1
2013/5/7
- ISO, 7z, lzh 압축 기능 추가
- ZIPX 포맷의 Winzip-Jpeg, Wavpack 압축 알고리즘의 압축 해제 기능 지원
- 압축된 Wim 포맷 압축 해제 기능 추가
- NSIS 파일 압축 해제 기능 추가
- 분할 압축된 CAB 포맷의 압축 해제 지원, CAB 포맷의 QUANTUM 알고리즘 압축 해제 기능 지원
- 코드페이지 자동 인식 기능 추가
- 등등등등등등... 자세한 사항은 SDK 변경사항 항목 참고
4.6.1.18
2012/11/13
- 2GB 이상의 J2J 파일을 처리하지 못하던 문제 수정
4.6.0.17
2012/10/23
- .avi.001 과 같이 avi/mkv 를 split 한 경우 ARK_FF_SPLIT 로 인식하지 못하던 버그 수정
- 빈 zip 파일을 열지 못하던 버그 수정
- 암호걸리고 솔리드 압축된 RAR의 압축 해제시 콜백으로 OnAskPassword()를 호출하지 않던 버그 수정
- POSIX 환경에서 서브폴더가 포함된 rar 분할 압축파일의 압축을 제대로 풀지 못하는 버그 수정
- POSIX 환경에서 .7z 파일 압축 풀때 파일 시간을 세팅하지 않던 문제 수정
- 유니코드를 지원하지 않는 압축 파일(zip,lzh..)의 코드페이지를 CP_ACP 대신 CP_OEMCP 로 처리하도록 수정
4.5.3.16
2012/6/8
- SFX 부가 정보가 포함된 EGG 포맷의 분할 SFX 파일을 분할 파일로 인식하지 못해서 손상된 파일로 잘못 인식하던 버그 수정
- ZIP 포맷이 아닌, ALZ포맷의 SFX파일을 열지 못하던 버그 수정
- ZIP 파일의 내부 경로명에 '.app/Contents/MacOS' 이 포함된 경우, 압축 해제시 무조건 실행파일로 처리하도록 수정 (POSIX만)
- TAR 파일의 실행파일 속성이 제대로 처리되지 않던 버그 수정(POSIX만)
- Security Data 가 들어간 WIM파일을 열지 못하던 버그 수정
- 압축파일 내 경로명이 260자를 넘어가는 ALZ 파일을 열지 못하는 버그 수정
4.5.2.15
2012/5/10
- 압축파일 인식 부분 개선
- __OSX 메타폴더 무시 기능 사용시 발생하는 메모리 릭 문제 수정
- FILE_ATTRIBUTE_SYSTEM 속성을 처리하지 못하던 버그 수정
- unix 에서 압축한 zip 파일의 심볼릭 링크 처리 기능 추가(POSIX)
4.5.1.14
2012/4/23
- AVI, MKV 파일을 압축파일로 잘못 인식하지 않도록 개선 및 ARK_FF_MATROSKA 추가
- 7z 포맷의 FILE_ATTRIBUTE_ARCHIVE 속성을 가져오지 않던 버그 수정
4.5.0.13
2012/4/12
- 일부 파일을 BH포맷으로 잘못 인식하던 문제 수정
- tar 파일 생성시 헤더 저장방식 개선
- 코드사인된 zip 포맷의 sfx 파일을 열때 손상된 파일로 잘못 인식하던 버그 수정
- 아주 작은 크기의 .Z 포맷의 압축을 풀지 못하던 버그 수정
- 파일명에 포함된 tab 을 _ 로 바꾸도록 기능 추가
- 파일명에 따옴표가 포함된 경우 파일을 풀지 못하던 문제 수정
- 7z 포맷의 delta, deflate 알고리즘 압축 해제 지원 추가
- ARK_COMPRESSION_METHOD_DELTA 추가
4.4.0.11
2012/3/5
- J2J 로 두번 변조한 파일을 열지 못하는 문제점 수정
- zip/zipx 압축시 forceUtf8FileName 옵션이 켜져 있으면 파일의 read only, hidden 등의 속성이 저장되지 않는 버그 수정
- 리소스에 압축 데이터가 포함된 일부 SFX 파일을 열지 못하던 문제 수정
- CheckFormat 에서 파일 앞부분을 체크하는 버퍼의 크기를 30k->1MB 로 늘림
- 일부 환경에서 작은 파일의 압축해제 속도가 느리던 문제 수정
- 맥 환경에서 발생하는 충돌을 피하기 위해서, Ark.h 의 BOOL 을 전부 BOOL32 로 바꾸어 버림
- ARKERR_CANT_CONVERT_FILENAME 추가
- zip 포맷에서 SArkFileInfo::SetFileName() 호출시 에러 발생할 경우 파일을 목록에 추가하지 않던것을 그냥 추가하도록 수정 (posix 에만 해당.)
- posix 에서는 파일명에 '?' 가 들어간 경우 정상적으로 압축을 해제할 수 있도록 수정
4.3.1.10
2012/2/22
- 여러개의 블럭에 파일의 데이터가 걸쳐진 CAB 파일의 압축을 풀지 못하던 버그 수정
- ZipCrypto 처리 속도 약간 향상 (대략 10%?)
- SArkGlobalOpt::bIgnoreMacOSXMetaFolder 옵션 추가
- 암호걸린 3G 이상인 EGG 포맷의 압축을 풀지 못하는 버그 수정
- AES 암호화 된 EGG 파일의 암호가 틀리거나 파일이 손상된 경우 ARKERR_CANT_READ_DATA 를 리턴하던것을 ARKERR_INVALID_FILE_CRC 를 리턴하도록 수정
- 압축하거나 압축 풀때 0 바이트 파일에 대한 진행률이 0% 가 나오던것을 100% 가 나오도록 수정
4.3.0.9
2012/2/10
- ZIP 파일 내부의 파일 개수가 10만개쯤 넘어가면 파일을 여는 속도가 무지 느려지던 문제 수정
- TBZ 파일을 솔리드 압축으로 열때 파일 크기가 커지면(100MB 정도) 파일을 여는 속도가 무지 느려지던 문제 수정
- ZIP 포맷의 extra field header 가 손상된 경우 죽는 경우가 있던 버그 수정
- ZIP 포맷의 센트럴 헤더가 손상되어서 로컬헤더 정보를 읽다가 죽는 경우가 있던 버그 수정
- ZIP 포맷의 deflate64 알고리즘 처리시 데이터가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 헤더가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 데이터가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 데이터가 조작되어서 압축 풀때 매우 큰 파일을 생성하는 문제 수정
- RAR 포맷의 헤더가 손상된 경우 죽거나 먹통되는 경우가 있던 버그 수정
- ARJ 포맷의 데이터가 손상된 경우 죽는 경우가 있던 버그 수정
- CAB 포맷에 CFData 항목이 있을때 죽는 버그 수정
- CAB 포맷에 내부 폴더 정보가 손상된 경우 죽는 버그 수정
- ACE 포맷의 압축 해제중 핸들릭이 발생하던 버그 수정
- 일부 분할 압축된 파일을 열 때 메모리 릭이 발생하던 버그 수정
- ZIP,TAR 포맷의 압축 해제시 실행 속성이 있을경우, 현재 유저뿐만 아니라 다른 사용자도 실행 가능하게 속성을 주도록 수정
4.2.1.7
2012/1/30
- SFX 로 분할 압축된 RAR 파일의 첫번째 파일의 확장자를 RAR 로 바꾸었을때에도 파일을 열 수 있도록 수정
- RAR 파일 내부에 솔리드 압축된 파일과 솔리드 압축되지 않은 파일이 섞여 있을때 압축을 풀지 못하던 버그 수정
- 손상된 Deflate64 데이터의 압축 해제시 버퍼 오버플로우가 발생하는 경우가 있던 버그 수정
- 파일명이 260자 넘어가는 긴 파일을 굳이 만들지 않도록 수정
- .tar 압축시 unix tar 에 가깝게 파일을 생성하도록 수정
4.2.0.6
2012/1/26
- 공백이 포함된 ace 파일을 열지 못하던 버그 수정
- 분할 압축된 RAR 파일에 더미 데이터가 붙어있는 경우 풀지 못하던 버그 수정
- .tgz 파일의 확장자가 .tar 로 잘못되어 있는 경우 내부 파일명에 .tar 를 붙이도록 기능 추가
- Deflate64 압축해제시 안정성 강화
- SArkGlobalOpt::bConvertNFD2NFCWhenMacOS 옵션 추가
- ZIP 파일처리시 ARK_CP_UTF8_MAC 코드페이지를 처리하지 못하던 버그 수정
- 멀티코어에서 압축시 에러 상황이 발생한 경우 크래시가 발생하던 버그 수정
- ZIP 파일에서 아이템을 삭제할 때 진행률이 100%가 넘어가는 경우가 있던 버그 수정
4.1.3.5
2012/1/20
- 헤더가 조작된 LZH 파일의 파일명 처리시 버퍼 오버플로우가 발생하던 버그 수정
4.1.2.4
2012/1/19
- 손상된 ARJ 파일 처리시 크래시가 발생하는 버그 수정
4.1.1.3
2012/1/18
- 압축풀 폴더 경로가 길 경우 폴더 생성중 오버플로우로 죽던 버그 수정
- ARKERR_NOT_SUPPORTED_OPERATION 에러코드 추가
- 4G가 넘는 TGZ 파일을 열때 간혹 손상된 파일이라고 에러를 리턴하던 버그 수정
4.1.0.2
2012/1/17
- SArkNtfsFileTimes 구조체 추가
- SArkFileItem::fileTimeNtfs 항목 삭제, SArkFileItem::ntfsFileTimes 항목 추가
- NTFS 파일 시간 처리 부분 개선
- LZH 파일의 파일명이 길 경우 헤더를 읽지 못하던 문제 수정
- LZH 파일의 데이터가 손상된 경우 크래시가 발생하던 문제 수정
- 솔리드 압축된 파일의 압축 해제시 파일 속성과 파일시간을 복원하지 않던 버그 수정
- 암호걸린 ACE 파일에 대해서 IsEncrypted() 가 FALSE 가 나오던 버그 수정
- ACE 포맷 처리 부분 개선
- tgz 포맷으로 압축시 gz 파일 내의 .tar 파일에 대해서도 시간 설정 기능 추가
- POSIX 환경에서도 압축푼 파일의 시간을 세팅하는 기능 추가
- POSIX 환경에서 에서 TAR 포맷의 실행파일 처리 기능 추가
4.0.0.1
2012/1/3
- ZIP 압축시 LZMA 압축 알고리즘, AES 암호화 지원 추가
- Deflate 압축시 멀티코어 지원 기능 추가
- tar, tgz 압축 기능 추가
- 맥OS 지원(Ark64.dylib) 및 SDK에 POSIX용 SO 포함
- SDK에 다양한 샘플 프로젝트 추가
- PMA, j2j 포맷 해제 지원 추가
- 여러개의 블럭으로 구성된 bzip2 압축 해제 지원 기능 추가
- 최신버전의 알집으로 암호를 걸어서 압축한 EGG 포맷의 압축을 해제하지 못하던 문제 수정
- posix 에서 RAR 포맷의 유니코드 패스워드를 처리하지 못하던 버그 수정
- RAR 압축해제시 암호가 틀린경우에도 CRC 에러라고만 나오던 버그 수정
- 에러코드가 잘못 리턴되던 버그 여기 저기 수정
- 기타 소소한 개선 및 버그 수정
3.2.2.5
2011/12/21
- LZMA-ZIPCRYPTO 를 사용하는 ZIP 파일의 압축을 풀지 못하던 버그 수정
3.2.1.4
2011/9/7
- 암호걸린 파일 압축 해제시 동일한 이름의 파일이 있을 경우 '이름 변경' 선택후 암호를 물어볼때 '취소'를 하면 원래 디렉토리에 있던 파일이 삭제되는 버그 수정
- 일부 tgz 파일이 손상되지 않았는데 손상되었다고 잘못 메시지를 출력하던 버그 수정
- deflate+aes 조합에서 분할압축의 뒷부분이 없을때 ARKERR_INFLATE_FAILED 에러가 발생하던것을 ARKERR_CANT_READ_DATA 가 발생하도록 수정
- 일부 deflate64 파일의 압축을 제대로 해제하지 못하던 버그 수정
- 구버전 rar(rar20) 파일의 암호를 풀지 못하던 버그 수정
- LZMA로 압축하고 AES 로 암호를 건 ZIP 파일을 열지 못하던 버그 수정
- 압축파일을 tar 로 묶은 경우 tar 파일이 아니라 안에 들어 있는 압축파일로 잘못 인식하던 버그 수정
- ARK_FF_XEF 추가
- 암호걸린 7zip 파일의 암호화 방식이 Unknown 으로 나오던 문제 수정
- ARK_ENCRYPTION_METHOD 에 ARK_ENCRYPTION_METHOD_PKAES128 등 추가
- 기타 사소한 개선
3.2.0.3
2011/7/11
- SDK에 ZIP 포맷 압축 해제 전용 DLL(ArkUnzip32.dll, ArkUnzip64.dll) 파일 포함
- 0 바이트 크기의 파일이 포함된 CAB 파일을 제대로 처리하지 못하던 버그 수정
- IMG 포맷 지원 기능 추가
- SFX 생성시 파일의 크기가 4GB를 넘을 경우 에러를 리턴하도록 기능 추가
- 7z 파일은 IArkEvent::OnOpening() 콜백 호출시 취소를 해도 취소가 되지 않던 버그 수정
- ZIP 파일 압축시 파일명을 UTF-8 로 저장한 경우 UNIX 에서 압축 해제시 퍼미션 처리가 제대로 안되던 버그 수정
- WIM 포맷 파일을 열때 IArkEvent::OnOpening() 콜백 호출시 pFileInfo->fileName 이 NULL 로 넘어오던 것을 pFileInfo 가 NULL로 넘어가도록 수정
- .LZMA 포맷 지원 추가
- tgz, tbz 파일을 열때 IArkEvent::OnOpening() 콜백이 호출되지 않던 문제 수정
- ZIP 포맷의 ppmd 알고리즘 압축 해제 지원 추가
- 암호걸린 7zip, rar 압축해제시 틀린 암호를 입력한 경우, 다시 압축 해제를 시도할 때 더이상 콜백으로 암호를 물어보지 않던 버그 수정
- 7zip 압축 해제시 이미 동일한 파일이 있어서 사용자가 '건너 띄기'를 선택한 경우 '파일을 열 수 없습니다' 에러코드가 리턴되던 버그 수정
- 압축을 하거나 풀때 작업중인 파일을 탐색기에서 삭제하거나 이동하지 못하도록 수정
- 작은 크기의 파일 압축을 다수 풀때 느려지던 문제 수정
- 큰 크기의 cab 파일 압축 해제시 발생하던 문제 수정
- ARKERR_ACCESS_DENIED_TO_DEST_PATH 에러코드 추가 및 대상 폴더에 쓰기 권한이 없는 경우 바로 ARKERR_ACCESS_DENIED_TO_DEST_PATH 에러 리턴하고 멈추는 기능 추가
- 콜백으로 패스워드 입력시 NULL 이 전달될 경우 죽던 문제 수정
- 암호걸린 rar 파일의 압축 해제중 암호가 틀린걸 알게될 경우 쓰던 파일을 삭제하도록 기능 추가
- 압축 파일 내 파일의 경로명 앞에 .\ 로 시작하는 파일 처리 기능 추가
- lzh 포맷의 level2 헤더의 파일 타임을 dostime 으로 잘못 처리하던 버그 수정
- 파일명 암호걸린 7zip 파일을 열기 실패했을때 Open() 에서 TRUE 를 리턴하던 버그 수정
- 분할 압축된 rar 파일중 뒤에 이상한 padding 이 붙어있는 파일의 압축을 풀지 못하던 버그 수정
- ARK_FF_BAMSFX_NOTFIRSTVOL 추가 및 분할 압축된 밤톨이 sfx 파일 압축해제 지원
- FileFormat2Str()메소드에 ARK_FF_EGG_NOTFIRSTVOL 빼먹었던 버그 수정
- ARK_MULTIVOL_STYLE_ZIPX 추가 및 분할 압축된 zipx 포맷 지원 추가
- rar 파일 압축 해제시 암호가 틀렸거나 파일이 손상된 경우 바로 에러를 리턴하고 더이상 압축을 풀지 않도록 수정
- 암호걸린 7z 파일의 암호가 틀렸을때 0 바이트 파일을 지우지 못하던 버그 수정
- 일부 분할 압축된 arj 파일의 압축을 풀지 못하던 버그 수정
- ARK_FF_PAE, ARK_FF_CAB_NOTFIRSTVOL 추가
- ZIP 포맷의 AES 192bit 암호화 압축해제 지원
- 기타 자잘한 버그 수정
3.1.0.2
2011/5/18
- IArkEvent::OnAskPassword() 추가
- ZIP 포맷의 explode 알고리즘 추가
- IArk::_OpenW() 등 C++ 빌더를 위한 메소드 추가
- IArk::SetPassword(LPCWSTR password) 추가 및 유니코드 패스워드 처리 기능 추가
- ZIP64 포맷으로 압축할 때 일부 헤더를 잘못 저장하던 버그 수정
- ARK_FF_ZIP_LASTVOLONLY 추가
- ZIP64 포맷의 압축파일을 열 때 로컬헤더가 아닌 센트럴헤더를 분석해서 열도록 수정 (속도 향상)
- 암호걸린 ZIP64 포맷의 압축을 해제하지 못하던 버그 수정
- 헤더CRC 정보가 없거나 minor version 2 의 .7z 포맷의 파일을 열지 못하던 문제 수정
- 32,64비트 PE-CAB 파일을 압축파일로 처리할 수 있도록 기능 추가
- ARK_FF_GIF, ARK_FF_OGGS, ARK_FF_ACE 추가
- Deflate64 알고리즘 처리시 발생하던 버그 수정
- 파일명을 UTF8로 저장시 version made by 를 수정해서 유닉스 unzip 에서 압축을 풀 수 있도록 수정
- 압축시 0 바이트 파일의 압축 알고리즘을 deflate 가 아닌 store 로 저장하도록 수정
- 구버전의 recovery block 이 있는 rar 파일을 열때 손상된 파일로 인식하던 버그 수정
- TAR 포맷의
- 일부 oggs 를 arc 포맷으로 잘못 인식하던 버그 수정
- 7zip 포맷의 파일명이 너무 길때 죽던 버그 수정
- 파일명이 너무 길 경우 압축을 풀지 못하던것을 풀 수 있도록 수정 (win32)
- 암호걸린 arj 파일이 IsEncrypted() 에서 아니라고 나오던 버그 수정
- 4GB 이상의 gz 파일의 크기가 오버플로우 되서 정상 표시되지 않던걸 추정을 통해서 계산하도록 수정
- ZIP 압축시 store 로 저장할 때 암호를 사용하면 crc 정보가 오류나던 버그 수정
- tgz,tbz 파일을 솔리드 포맷으로 처리하는 기능 추가
- IArk::SetGlobalOpt() 의 파라미터 추가 및 변경
- IArk::ExtractOneAs() 에 파라미터 추가
- ZIP 압축시 폴더 구분자를 \ 대신 / 를 쓰도록 수정
- 코멘트가 있고 솔리드 압축된 RAR파일 압축 해제시 죽던 버그 수정
- 밤톨이 sfx 압축해제 기능 추가
- 압축시 압축 안되는 데이터는 압축포기하는 기능 추가
- IArkCompressor::AddFileItem() 메소드의 호출 속도 향상
- SArkCompressorOpt 옵션에서 utf8Comment 삭제, sfxPathName, forceUtf8FileName, utf8FileNameIfNeeded, bypassWhenUncompressible 추가
- ZIP 포맷 압축시 폴더의 생성 시간도 저장하도록 기능 추가
- 일부 포맷에서 IArkEvent::OnOpening() 이 호출되지 않던 버그 수정 (tar, wim, lzh, iso, cab, arc)
- rar 분할압축 파일의 압축 해제시 뒷부분의 파일이 없을때 crc 에러나던것을 ARKERR_FILE_TRUNCATED 에러를 발생시키도록 수정
- 특정 형태의 rar 분할 압축을 풀지 못하는 버그 수정
- sfx-zip 파일 처리시 0 바이트 파일은 무시하도록 수정
- IArkEvent::OnError() 에 bIsWarning 추가
- 내부 crc 처리 속도 향상
- 시스템의 기본 코드페이지가 949 가 아닐때 MBCS를 사용해서 한글로 된 7Z 파일을 열려고 할 때 열지 못하던 버그 수정
- Lzma SDK 9.13 -> 9.20 으로 업데이트
- 기타
3.0.0.1
2011/1/17
- IArkCompressor 인터페이스를 통한 압축하기 및 압축파일 편집기능이 추가되었습니다.
- SArkProgressInfo 구조체의 멤버가 간략화 되었습니다.
- IArk::TestArchive(), IArk::IsOpened(), IArk::GetArchiveStartPos() 메소드가 추가되었습니다.
- CArkLib::CreateCompressor() 메소드가 추가되었습니다.
- IArk::ExtractMultiFileTo() 메소드의 파라미터가 일부 변경되었습니다.
- IArk::DisableFile() 메소드가 삭제되었습니다.
- CreateArkCompressor() 함수, IArkCompressor 인터페이스, SArkCompressorOpt 구조체가 추가되었습니다.
2010/06/08
- ARK V3.0 개발 시작
2010/02/23
- ARK V2.0 릴리스
2009/11/18
- ARK V2.0 작업 시작
2009/04/06
- ARK V1.0 작업 시작
2008/03/12
- 개발 시작