Fixes error handling issues in ARJ parser wherein FALSE is mistakenly
returned instead of a CL_E* error code, as the type is return type is
`int`, but in reality a cl_error_t enum value is expected.
... | ... |
@@ -894,7 +894,7 @@ static int arj_read_main_header(arj_metadata_t *metadata) |
894 | 894 |
|
895 | 895 |
filename_max_len = (header_size + sizeof(header_size)) - (metadata->offset - orig_offset); |
896 | 896 |
if (filename_max_len > header_size) { |
897 |
- cli_dbgmsg("UNARJ: Format error. First Header Size invalid"); |
|
897 |
+ cli_dbgmsg("UNARJ: Format error. First Header Size invalid\n"); |
|
898 | 898 |
ret = FALSE; |
899 | 899 |
goto done; |
900 | 900 |
} |
... | ... |
@@ -912,7 +912,7 @@ static int arj_read_main_header(arj_metadata_t *metadata) |
912 | 912 |
|
913 | 913 |
comment_max_len = (header_size + sizeof(header_size)) - (metadata->offset - orig_offset); |
914 | 914 |
if (comment_max_len > header_size) { |
915 |
- cli_dbgmsg("UNARJ: Format error. First Header Size invalid"); |
|
915 |
+ cli_dbgmsg("UNARJ: Format error. First Header Size invalid\n"); |
|
916 | 916 |
ret = FALSE; |
917 | 917 |
goto done; |
918 | 918 |
} |
... | ... |
@@ -1003,7 +1003,7 @@ static int arj_read_file_header(arj_metadata_t *metadata) |
1003 | 1003 |
} |
1004 | 1004 |
if ((header_size + sizeof(header_size)) > (metadata->map->real_len - metadata->offset)) { |
1005 | 1005 |
cli_dbgmsg("arj_read_file_header: invalid header_size: %u, exceeds length of file.\n", header_size); |
1006 |
- ret = FALSE; |
|
1006 |
+ ret = CL_EFORMAT; |
|
1007 | 1007 |
goto done; |
1008 | 1008 |
} |
1009 | 1009 |
if (fmap_readn(metadata->map, &file_hdr, metadata->offset, 30) != 30) { |
... | ... |
@@ -1039,16 +1039,21 @@ static int arj_read_file_header(arj_metadata_t *metadata) |
1039 | 1039 |
|
1040 | 1040 |
filename_max_len = (header_size + sizeof(header_size)) - (metadata->offset - orig_offset); |
1041 | 1041 |
if (filename_max_len > header_size) { |
1042 |
- cli_dbgmsg("UNARJ: Format error. First Header Size invalid"); |
|
1043 |
- ret = FALSE; |
|
1042 |
+ cli_dbgmsg("UNARJ: Format error. First Header Size invalid\n"); |
|
1043 |
+ ret = CL_EFORMAT; |
|
1044 | 1044 |
goto done; |
1045 | 1045 |
} |
1046 | 1046 |
if (filename_max_len > 0) { |
1047 |
- fnnorm = cli_calloc(sizeof(unsigned char), filename_max_len + 1); |
|
1048 |
- filename = fmap_need_offstr(metadata->map, metadata->offset, filename_max_len + 1); |
|
1049 |
- if (!filename || !fnnorm) { |
|
1047 |
+ fnnorm = cli_calloc(sizeof(unsigned char), filename_max_len + 1); |
|
1048 |
+ if (!fnnorm) { |
|
1050 | 1049 |
cli_dbgmsg("UNARJ: Unable to allocate memory for filename\n"); |
1051 |
- ret = FALSE; |
|
1050 |
+ ret = CL_EMEM; |
|
1051 |
+ goto done; |
|
1052 |
+ } |
|
1053 |
+ filename = fmap_need_offstr(metadata->map, metadata->offset, filename_max_len + 1); |
|
1054 |
+ if (!filename) { |
|
1055 |
+ cli_dbgmsg("UNARJ: Filename is out of file\n"); |
|
1056 |
+ ret = CL_EFORMAT; |
|
1052 | 1057 |
goto done; |
1053 | 1058 |
} |
1054 | 1059 |
filename_len = CLI_STRNLEN(filename, filename_max_len); |
... | ... |
@@ -1057,16 +1062,21 @@ static int arj_read_file_header(arj_metadata_t *metadata) |
1057 | 1057 |
|
1058 | 1058 |
comment_max_len = (header_size + sizeof(header_size)) - (metadata->offset - orig_offset); |
1059 | 1059 |
if (comment_max_len > header_size) { |
1060 |
- cli_dbgmsg("UNARJ: Format error. First Header Size invalid"); |
|
1061 |
- ret = FALSE; |
|
1060 |
+ cli_dbgmsg("UNARJ: Format error. First Header Size invalid\n"); |
|
1061 |
+ ret = CL_EFORMAT; |
|
1062 | 1062 |
goto done; |
1063 | 1063 |
} |
1064 | 1064 |
if (comment_max_len > 0) { |
1065 | 1065 |
comnorm = cli_calloc(sizeof(unsigned char), comment_max_len + 1); |
1066 |
- comment = fmap_need_offstr(metadata->map, metadata->offset, comment_max_len + 1); |
|
1067 |
- if (!comment || !comnorm) { |
|
1066 |
+ if (!comnorm) { |
|
1068 | 1067 |
cli_dbgmsg("UNARJ: Unable to allocate memory for comment\n"); |
1069 |
- ret = FALSE; |
|
1068 |
+ ret = CL_EMEM; |
|
1069 |
+ goto done; |
|
1070 |
+ } |
|
1071 |
+ comment = fmap_need_offstr(metadata->map, metadata->offset, comment_max_len + 1); |
|
1072 |
+ if (!comment) { |
|
1073 |
+ cli_dbgmsg("UNARJ: comment is out of file\n"); |
|
1074 |
+ ret = CL_EFORMAT; |
|
1070 | 1075 |
goto done; |
1071 | 1076 |
} |
1072 | 1077 |
comment_len += CLI_STRNLEN(comment, comment_max_len); |