Changeset 3621 in MondoRescue for branches/3.3/mindi-busybox/archival/libarchive/decompress_bunzip2.c
- Timestamp:
- Dec 20, 2016, 4:07:32 PM (7 years ago)
- Location:
- branches/3.3
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/3.3/mindi-busybox/archival/libarchive/decompress_bunzip2.c
r3232 r3621 43 43 #include "bb_archive.h" 44 44 45 #if 0 46 # define dbg(...) bb_error_msg(__VA_ARGS__) 47 #else 48 # define dbg(...) ((void)0) 49 #endif 50 45 51 /* Constants for Huffman coding */ 46 52 #define MAX_GROUPS 6 … … 53 59 /* Status return values */ 54 60 #define RETVAL_OK 0 55 #define RETVAL_LAST_BLOCK ( -1)56 #define RETVAL_NOT_BZIP_DATA ( -2)57 #define RETVAL_UNEXPECTED_INPUT_EOF ( -3)58 #define RETVAL_SHORT_WRITE ( -4)59 #define RETVAL_DATA_ERROR ( -5)60 #define RETVAL_OUT_OF_MEMORY ( -6)61 #define RETVAL_OBSOLETE_INPUT ( -7)61 #define RETVAL_LAST_BLOCK (dbg("%d", __LINE__), -1) 62 #define RETVAL_NOT_BZIP_DATA (dbg("%d", __LINE__), -2) 63 #define RETVAL_UNEXPECTED_INPUT_EOF (dbg("%d", __LINE__), -3) 64 #define RETVAL_SHORT_WRITE (dbg("%d", __LINE__), -4) 65 #define RETVAL_DATA_ERROR (dbg("%d", __LINE__), -5) 66 #define RETVAL_OUT_OF_MEMORY (dbg("%d", __LINE__), -6) 67 #define RETVAL_OBSOLETE_INPUT (dbg("%d", __LINE__), -7) 62 68 63 69 /* Other housekeeping constants */ … … 441 447 if (runPos != 0) { 442 448 uint8_t tmp_byte; 443 if (dbufCount + runCnt >= dbufSize) return RETVAL_DATA_ERROR; 449 if (dbufCount + runCnt > dbufSize) { 450 dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR", 451 dbufCount, runCnt, dbufCount + runCnt, dbufSize); 452 return RETVAL_DATA_ERROR; 453 } 444 454 tmp_byte = symToByte[mtfSymbol[0]]; 445 455 byteCount[tmp_byte] += runCnt; … … 722 732 /* Decompress src_fd to dst_fd. Stops at end of bzip data, not end of file. */ 723 733 IF_DESKTOP(long long) int FAST_FUNC 724 unpack_bz2_stream(transformer_ aux_data_t *aux, int src_fd, int dst_fd)734 unpack_bz2_stream(transformer_state_t *xstate) 725 735 { 726 736 IF_DESKTOP(long long total_written = 0;) … … 730 740 unsigned len; 731 741 732 if (check_signature16( aux, src_fd, BZIP2_MAGIC))742 if (check_signature16(xstate, BZIP2_MAGIC)) 733 743 return -1; 734 744 … … 737 747 while (1) { /* "Process one BZ... stream" loop */ 738 748 739 i = start_bunzip(&bd, src_fd, outbuf + 2, len);749 i = start_bunzip(&bd, xstate->src_fd, outbuf + 2, len); 740 750 741 751 if (i == 0) { … … 747 757 if (i == 0) /* EOF? */ 748 758 break; 749 if (i != full_write(dst_fd, outbuf, i)) { 750 bb_error_msg("short write"); 759 if (i != transformer_write(xstate, outbuf, i)) { 751 760 i = RETVAL_SHORT_WRITE; 752 761 goto release_mem; … … 781 790 memcpy(outbuf, &bd->inbuf[bd->inbufPos], len); 782 791 if (len < 2) { 783 if (safe_read( src_fd, outbuf + len, 2 - len) != 2 - len)792 if (safe_read(xstate->src_fd, outbuf + len, 2 - len) != 2 - len) 784 793 break; 785 794 len = 2; … … 809 818 int main(int argc, char **argv) 810 819 { 811 int i;812 820 char c; 813 821
Note:
See TracChangeset
for help on using the changeset viewer.