From 4cde96dbdcbe8bb10574f6654900a6fca4224abe Mon Sep 17 00:00:00 2001 From: "Victor M. Alvarez" Date: Fri, 4 Mar 2022 11:22:33 +0100 Subject: [PATCH] Fix type conversion warnings. --- libyara/modules/pe/pe.c | 79 +++++++++++++++++++++-------------------- libyara/re.c | 10 +++--- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/libyara/modules/pe/pe.c b/libyara/modules/pe/pe.c index be67c1d0..638605de 100644 --- a/libyara/modules/pe/pe.c +++ b/libyara/modules/pe/pe.c @@ -49,12 +49,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #endif +#include #include #include #include #include #include -#include #include #include @@ -307,8 +307,8 @@ static void pe_parse_debug_directory(PE* pe) { int64_t pcv_hdr_offset = 0; - debug_dir = (PIMAGE_DEBUG_DIRECTORY)( - pe->data + debug_dir_offset + i * sizeof(IMAGE_DEBUG_DIRECTORY)); + debug_dir = + (PIMAGE_DEBUG_DIRECTORY) (pe->data + debug_dir_offset + i * sizeof(IMAGE_DEBUG_DIRECTORY)); if (!struct_fits_in_pe(pe, debug_dir, IMAGE_DEBUG_DIRECTORY)) break; @@ -334,7 +334,7 @@ static void pe_parse_debug_directory(PE* pe) if (pcv_hdr_offset <= 0) continue; - PCV_HEADER cv_hdr = (PCV_HEADER)(pe->data + pcv_hdr_offset); + PCV_HEADER cv_hdr = (PCV_HEADER) (pe->data + pcv_hdr_offset); if (!struct_fits_in_pe(pe, cv_hdr, CV_HEADER)) continue; @@ -390,8 +390,7 @@ static const PIMAGE_RESOURCE_DIR_STRING_U parse_resource_name( if (yr_le32toh(entry->Name) & 0x80000000) { const PIMAGE_RESOURCE_DIR_STRING_U pNameString = - (PIMAGE_RESOURCE_DIR_STRING_U)( - rsrc_data + (yr_le32toh(entry->Name) & 0x7FFFFFFF)); + (PIMAGE_RESOURCE_DIR_STRING_U) (rsrc_data + (yr_le32toh(entry->Name) & 0x7FFFFFFF)); // A resource directory string is 2 bytes for the length and then a variable // length Unicode string. Make sure we have at least 2 bytes. @@ -445,7 +444,7 @@ static int _pe_iterate_resources( // by incrementing resource_dir we skip sizeof(resource_dir) bytes // and get a pointer to the end of the resource directory. - entry = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(resource_dir + 1); + entry = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (resource_dir + 1); for (i = 0; i < total_entries; i++) { @@ -473,8 +472,8 @@ static int _pe_iterate_resources( if (IS_RESOURCE_SUBDIRECTORY(entry) && rsrc_tree_level < 2) { - PIMAGE_RESOURCE_DIRECTORY directory = (PIMAGE_RESOURCE_DIRECTORY)( - rsrc_data + RESOURCE_OFFSET(entry)); + PIMAGE_RESOURCE_DIRECTORY directory = + (PIMAGE_RESOURCE_DIRECTORY) (rsrc_data + RESOURCE_OFFSET(entry)); if (struct_fits_in_pe(pe, directory, IMAGE_RESOURCE_DIRECTORY)) { @@ -499,8 +498,8 @@ static int _pe_iterate_resources( } else { - PIMAGE_RESOURCE_DATA_ENTRY data_entry = (PIMAGE_RESOURCE_DATA_ENTRY)( - rsrc_data + RESOURCE_OFFSET(entry)); + PIMAGE_RESOURCE_DATA_ENTRY data_entry = + (PIMAGE_RESOURCE_DATA_ENTRY) (rsrc_data + RESOURCE_OFFSET(entry)); if (struct_fits_in_pe(pe, data_entry, IMAGE_RESOURCE_DATA_ENTRY)) { @@ -562,7 +561,7 @@ static int pe_iterate_resources( if (offset < 0) return 0; - rsrc_dir = (PIMAGE_RESOURCE_DIRECTORY)(pe->data + offset); + rsrc_dir = (PIMAGE_RESOURCE_DIRECTORY) (pe->data + offset); if (struct_fits_in_pe(pe, rsrc_dir, IMAGE_RESOURCE_DIRECTORY)) { @@ -617,7 +616,7 @@ static void pe_parse_version_info(PIMAGE_RESOURCE_DATA_ENTRY rsrc_data, PE* pe) if (version_info_offset < 0) return; - version_info = (PVERSION_INFO)(pe->data + version_info_offset); + version_info = (PVERSION_INFO) (pe->data + version_info_offset); if (!struct_fits_in_pe(pe, version_info, VERSION_INFO)) return; @@ -811,7 +810,7 @@ static IMPORT_FUNCTION* pe_parse_import_descriptor( if (IS_64BITS_PE(pe)) { - PIMAGE_THUNK_DATA64 thunks64 = (PIMAGE_THUNK_DATA64)(pe->data + offset); + PIMAGE_THUNK_DATA64 thunks64 = (PIMAGE_THUNK_DATA64) (pe->data + offset); while (struct_fits_in_pe(pe, thunks64, IMAGE_THUNK_DATA64) && yr_le64toh(thunks64->u1.Ordinal) != 0 && @@ -828,8 +827,8 @@ static IMPORT_FUNCTION* pe_parse_import_descriptor( if (offset >= 0) { - PIMAGE_IMPORT_BY_NAME import = (PIMAGE_IMPORT_BY_NAME)( - pe->data + offset); + PIMAGE_IMPORT_BY_NAME import = + (PIMAGE_IMPORT_BY_NAME) (pe->data + offset); if (struct_fits_in_pe(pe, import, IMAGE_IMPORT_BY_NAME)) { @@ -879,7 +878,7 @@ static IMPORT_FUNCTION* pe_parse_import_descriptor( } else { - PIMAGE_THUNK_DATA32 thunks32 = (PIMAGE_THUNK_DATA32)(pe->data + offset); + PIMAGE_THUNK_DATA32 thunks32 = (PIMAGE_THUNK_DATA32) (pe->data + offset); while (struct_fits_in_pe(pe, thunks32, IMAGE_THUNK_DATA32) && yr_le32toh(thunks32->u1.Ordinal) != 0 && @@ -896,8 +895,8 @@ static IMPORT_FUNCTION* pe_parse_import_descriptor( if (offset >= 0) { - PIMAGE_IMPORT_BY_NAME import = (PIMAGE_IMPORT_BY_NAME)( - pe->data + offset); + PIMAGE_IMPORT_BY_NAME import = + (PIMAGE_IMPORT_BY_NAME) (pe->data + offset); if (struct_fits_in_pe(pe, import, IMAGE_IMPORT_BY_NAME)) { @@ -1057,7 +1056,7 @@ static IMPORTED_DLL* pe_parse_imports(PE* pe) if (offset < 0) return NULL; - imports = (PIMAGE_IMPORT_DESCRIPTOR)(pe->data + offset); + imports = (PIMAGE_IMPORT_DESCRIPTOR) (pe->data + offset); while (struct_fits_in_pe(pe, imports, IMAGE_IMPORT_DESCRIPTOR) && yr_le32toh(imports->Name) != 0 && num_imports < MAX_PE_IMPORTS) @@ -1238,7 +1237,7 @@ static void* pe_parse_delayed_imports(PE* pe) if (offset < 0) return NULL; - import_descriptor = (PIMAGE_DELAYLOAD_DESCRIPTOR)(pe->data + offset); + import_descriptor = (PIMAGE_DELAYLOAD_DESCRIPTOR) (pe->data + offset); for (; struct_fits_in_pe(pe, import_descriptor, IMAGE_DELAYLOAD_DESCRIPTOR); import_descriptor++) @@ -1270,16 +1269,17 @@ static void* pe_parse_delayed_imports(PE* pe) // 2775d97f8bdb3311ace960a42eee35dbec84b9d71a6abbacb26c14e83f5897e4 if (!IS_64BITS_PE(pe) && !Attributes) { - DllNameRVA = pe_normalize_delay_import_value(image_base, DllNameRVA); - ModuleHandleRVA = pe_normalize_delay_import_value( + DllNameRVA = (DWORD) pe_normalize_delay_import_value( + image_base, DllNameRVA); + ModuleHandleRVA = (DWORD) pe_normalize_delay_import_value( image_base, ModuleHandleRVA); - ImportAddressTableRVA = pe_normalize_delay_import_value( + ImportAddressTableRVA = (DWORD) pe_normalize_delay_import_value( image_base, ImportAddressTableRVA); - ImportNameTableRVA = pe_normalize_delay_import_value( + ImportNameTableRVA = (DWORD) pe_normalize_delay_import_value( image_base, ImportNameTableRVA); - BoundImportAddressTableRVA = pe_normalize_delay_import_value( + BoundImportAddressTableRVA = (DWORD) pe_normalize_delay_import_value( image_base, BoundImportAddressTableRVA); - UnloadInformationTableRVA = pe_normalize_delay_import_value( + UnloadInformationTableRVA = (DWORD) pe_normalize_delay_import_value( image_base, UnloadInformationTableRVA); } @@ -1454,7 +1454,7 @@ static void pe_parse_exports(PE* pe) export_start = offset; export_size = yr_le32toh(directory->Size); - exports = (PIMAGE_EXPORT_DIRECTORY)(pe->data + offset); + exports = (PIMAGE_EXPORT_DIRECTORY) (pe->data + offset); if (!struct_fits_in_pe(pe, exports, IMAGE_EXPORT_DIRECTORY)) return; @@ -1835,8 +1835,8 @@ static void pe_parse_certificates(PE* pe) eod = pe->data + yr_le32toh(directory->VirtualAddress) + yr_le32toh(directory->Size); - win_cert = (PWIN_CERTIFICATE)( - pe->data + yr_le32toh(directory->VirtualAddress)); + win_cert = + (PWIN_CERTIFICATE) (pe->data + yr_le32toh(directory->VirtualAddress)); // // Walk the directory, pulling out certificates. @@ -1872,19 +1872,19 @@ static void pe_parse_certificates(PE* pe) if (yr_le16toh(win_cert->Revision) != WIN_CERT_REVISION_2_0 || yr_le16toh(win_cert->CertificateType) != WIN_CERT_TYPE_PKCS_SIGNED_DATA) { - end = (uintptr_t)((uint8_t*) win_cert) + yr_le32toh(win_cert->Length); + end = (uintptr_t) ((uint8_t*) win_cert) + yr_le32toh(win_cert->Length); // Next certificate is aligned to the next 8-bytes boundary. - win_cert = (PWIN_CERTIFICATE)((end + 7) & -8); + win_cert = (PWIN_CERTIFICATE) ((end + 7) & -8); continue; } cert_p = win_cert->Certificate; - end = (uintptr_t)((uint8_t*) win_cert) + yr_le32toh(win_cert->Length); + end = (uintptr_t) ((uint8_t*) win_cert) + yr_le32toh(win_cert->Length); while ((uintptr_t) cert_p < end && counter < MAX_PE_CERTS) { - pkcs7 = d2i_PKCS7(NULL, &cert_p, (uint32_t)(end - (uintptr_t) cert_p)); + pkcs7 = d2i_PKCS7(NULL, &cert_p, (uint32_t) (end - (uintptr_t) cert_p)); if (pkcs7 == NULL) break; @@ -1895,7 +1895,7 @@ static void pe_parse_certificates(PE* pe) } // Next certificate is aligned to the next 8-bytes boundary. - win_cert = (PWIN_CERTIFICATE)((end + 7) & -8); + win_cert = (PWIN_CERTIFICATE) ((end + 7) & -8); } set_integer(counter, pe->object, "number_of_signatures"); @@ -2794,7 +2794,10 @@ long long pe_imports_regexp( return result; } -long long pe_imports_ordinal(IMPORTED_DLL* dll, char* dll_name, int ordinal) +long long pe_imports_ordinal( + IMPORTED_DLL* dll, + char* dll_name, + uint64_t ordinal) { if (dll == NULL) return 0; @@ -2830,7 +2833,7 @@ define_function(imports_standard) define_function(imports) { - int flags = integer_argument(1); + int64_t flags = integer_argument(1); char* dll_name = string_argument(2); char* function_name = string_argument(3); @@ -2909,7 +2912,7 @@ define_function(imports_standard_regex) define_function(imports_regex) { - int flags = integer_argument(1); + int64_t flags = integer_argument(1); RE* dll_name = regexp_argument(2); RE* function_name = regexp_argument(3); diff --git a/libyara/re.c b/libyara/re.c index 604b463c..f83dd9cb 100644 --- a/libyara/re.c +++ b/libyara/re.c @@ -1061,7 +1061,7 @@ static int _yr_re_emit( if (bookmark_2 - bookmark_3 < INT32_MIN) return ERROR_REGULAR_EXPRESSION_TOO_LARGE; - repeat_args.offset = (int32_t)(bookmark_2 - bookmark_3); + repeat_args.offset = (int32_t) (bookmark_2 - bookmark_3); FAIL_ON_ERROR(_yr_emit_inst_arg_struct( emit_context, @@ -1080,7 +1080,7 @@ static int _yr_re_emit( if (bookmark_4 - bookmark_1 > INT32_MAX) return ERROR_REGULAR_EXPRESSION_TOO_LARGE; - repeat_start_args_addr->offset = (int32_t)(bookmark_4 - bookmark_1); + repeat_start_args_addr->offset = (int32_t) (bookmark_4 - bookmark_1); } if (emit_split) @@ -1114,7 +1114,7 @@ static int _yr_re_emit( split_offset_addr = (int16_t*) yr_arena_ref_to_ptr( emit_context->arena, &split_offset_ref); - *split_offset_addr = (int16_t)(bookmark_2 - bookmark_1); + *split_offset_addr = (int16_t) (bookmark_2 - bookmark_1); } break; @@ -2139,8 +2139,8 @@ int yr_re_fast_exec( } bytes_matched = flags & RE_FLAGS_BACKWARDS - ? input_data - current->input - 1 - : current->input - input_data; + ? (int) (input_data - current->input - 1) + : (int) (current->input - input_data); uint8_t mask; uint8_t value;