diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c index 99abeac34bf..96ec6ecb9eb 100644 --- a/src/shared/bootspec.c +++ b/src/shared/bootspec.c @@ -172,8 +172,6 @@ static int boot_entry_load( } void boot_config_free(BootConfig *config) { - size_t i; - assert(config); free(config->default_pattern); @@ -189,7 +187,7 @@ void boot_config_free(BootConfig *config) { free(config->entry_default); free(config->entry_selected); - for (i = 0; i < config->n_entries; i++) + for (size_t i = 0; i < config->n_entries; i++) boot_entry_free(config->entries + i); free(config->entries); } @@ -437,12 +435,9 @@ static int find_sections( _cleanup_free_ struct PeSectionHeader *sections = NULL; _cleanup_free_ char *osrelease = NULL, *cmdline = NULL; - size_t i, n_sections; - struct DosFileHeader dos; - struct PeHeader pe; - uint64_t start; ssize_t n; + struct DosFileHeader dos; n = pread(fd, &dos, sizeof(dos), 0); if (n < 0) return log_error_errno(errno, "Failed read DOS header: %m"); @@ -452,7 +447,9 @@ static int find_sections( if (dos.Magic[0] != 'M' || dos.Magic[1] != 'Z') return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "DOS executable magic missing, refusing."); - start = unaligned_read_le32(&dos.ExeHeader); + uint64_t start = unaligned_read_le32(&dos.ExeHeader); + + struct PeHeader pe; n = pread(fd, &pe, sizeof(pe), start); if (n < 0) return log_error_errno(errno, "Failed to read PE header: %m"); @@ -462,7 +459,7 @@ static int find_sections( if (pe.Magic[0] != 'P' || pe.Magic[1] != 'E' || pe.Magic[2] != 0 || pe.Magic[3] != 0) return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "PE executable magic missing, refusing."); - n_sections = unaligned_read_le16(&pe.FileHeader.NumberOfSections); + size_t n_sections = unaligned_read_le16(&pe.FileHeader.NumberOfSections); if (n_sections > 96) return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "PE header has too many sections, refusing."); @@ -478,7 +475,7 @@ static int find_sections( if ((size_t) n != n_sections * sizeof(struct PeSectionHeader)) return log_error_errno(SYNTHETIC_ERRNO(EIO), "Short read while reading sections, refusing."); - for (i = 0; i < n_sections; i++) { + for (size_t i = 0; i < n_sections; i++) { _cleanup_free_ char *k = NULL; uint32_t offset, size; char **b;