Lines 217-223
static uchar arj_flags;
Link Here
|
217 |
static short method; |
217 |
static short method; |
218 |
static uint file_mode; |
218 |
static uint file_mode; |
219 |
static ulong time_stamp; |
219 |
static ulong time_stamp; |
220 |
static short entry_pos; |
220 |
static ushort entry_pos; |
221 |
static ushort host_data; |
221 |
static ushort host_data; |
222 |
static uchar *get_ptr; |
222 |
static uchar *get_ptr; |
223 |
static UCRC file_crc; |
223 |
static UCRC file_crc; |
Lines 608-613
char *name;
Link Here
|
608 |
error(M_BADHEADR, ""); |
608 |
error(M_BADHEADR, ""); |
609 |
|
609 |
|
610 |
crc = CRC_MASK; |
610 |
crc = CRC_MASK; |
|
|
611 |
memset(header, 0, sizeof(header)); |
611 |
fread_crc(header, (int) headersize, fd); |
612 |
fread_crc(header, (int) headersize, fd); |
612 |
header_crc = fget_crc(fd); |
613 |
header_crc = fget_crc(fd); |
613 |
if ((crc ^ CRC_MASK) != header_crc) |
614 |
if ((crc ^ CRC_MASK) != header_crc) |
Lines 632-640
char *name;
Link Here
|
632 |
|
633 |
|
633 |
if (origsize < 0 || compsize < 0) |
634 |
if (origsize < 0 || compsize < 0) |
634 |
error(M_HEADRCRC, ""); |
635 |
error(M_HEADRCRC, ""); |
|
|
636 |
if(first_hdr_size > headersize-2) /* need two \0 for file and comment */ |
637 |
error(M_BADHEADR, ""); |
635 |
|
638 |
|
636 |
hdr_filename = (char *)&header[first_hdr_size]; |
639 |
hdr_filename = (char *)&header[first_hdr_size]; |
637 |
strncopy(filename, hdr_filename, sizeof(filename)); |
640 |
strncopy(filename, hdr_filename, sizeof(filename)); |
|
|
641 |
if(entry_pos >= strlen(filename)) |
642 |
error(M_BADHEADR, ""); |
638 |
if (host_os != OS) |
643 |
if (host_os != OS) |
639 |
strparity((uchar *)filename); |
644 |
strparity((uchar *)filename); |
640 |
if ((arj_flags & PATHSYM_FLAG) != 0) |
645 |
if ((arj_flags & PATHSYM_FLAG) != 0) |
Lines 733-743
extract()
Link Here
|
733 |
|
738 |
|
734 |
no_output = 0; |
739 |
no_output = 0; |
735 |
if (command == 'E') |
740 |
if (command == 'E') |
736 |
strcpy(name, &filename[entry_pos]); |
741 |
strncopy(name, &filename[entry_pos], sizeof(name)); |
737 |
else |
742 |
else |
738 |
{ |
743 |
{ |
739 |
strcpy(name, DEFAULT_DIR); |
744 |
strcpy(name, DEFAULT_DIR); |
740 |
strcat(name, filename); |
745 |
strncopy(name+strlen(name), filename, sizeof(name)-strlen(name)); |
741 |
} |
746 |
} |
742 |
|
747 |
|
743 |
if (host_os != OS) |
748 |
if (host_os != OS) |