mkimage: zero fill alignment space
PATCH 1/1 mkimage: zero fill alignment space
This did not cause real problem but is good for reproducible builds. I hit it with recent bootinfoscript that displays embedded config; I was puzzled by random garbage at the end.
Also remove redundant zeroing code where we fill in the whole memory block anyway.
--- util/mkimage.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)
util/mkimage.c +13 -16
@@ -992,7 +992,7 @@ grub_install_generate_image (const char *dir, const char *prefix, {char *kernel_img, *core_img;size_t kernel_size, total_module_size, core_size, exec_size; -size_t memdisk_size =0 , config_size =0 , config_size_pure =0 ; +size_t memdisk_size =0 , memdisk_size_pure =0 , config_size =0 , config_size_pure =0 ;size_t prefix_size =0 ;char *kernel_path;size_t offset;
@@ -1035,7 +1035,8 @@ grub_install_generate_image (const char *dir, const char *prefix,if (memdisk_path) { - memdisk_size =ALIGN_UP (grub_util_get_image_size (memdisk_path),512 ); + memdisk_size_pure =grub_util_get_image_size (memdisk_path); + memdisk_size =ALIGN_UP (memdisk_size_pure,512 );grub_util_info ("the size of memory disk is 0x%" GRUB_HOST_PRIxLONG_LONG, (unsigned long long ) memdisk_size); total_module_size += memdisk_size +sizeof (struct grub_module_header );
@@ -1043,8 +1044,8 @@ grub_install_generate_image (const char *dir, const char *prefix,if (config_path) { - config_size_pure =grub_util_get_image_size (config_path) +1 ; - config_size =ALIGN_ADDR (config_size_pure); + config_size_pure =grub_util_get_image_size (config_path); + config_size =ALIGN_ADDR (config_size_pure +1 );grub_util_info ("the size of config file is 0x%" GRUB_HOST_PRIxLONG_LONG, (unsigned long long ) config_size); total_module_size += config_size +sizeof (struct grub_module_header );
@@ -1140,19 +1141,21 @@ grub_install_generate_image (const char *dir, const char *prefix,size_t i;for (i =0 ; i < npubkeys; i++) { -size_t curs;struct grub_module_header *header; +size_t key_size, orig_size; - curs =grub_util_get_image_size (pubkey_paths[i]); + orig_size =grub_util_get_image_size (pubkey_paths[i]); + key_size =ALIGN_ADDR (orig_size); header = (struct grub_module_header *) (kernel_img + offset);memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PUBKEY ); - header->size =grub_host_to_target32 (curs +sizeof (*header)); + header->size =grub_host_to_target32 (key_size +sizeof (*header)); offset +=sizeof (*header);grub_util_load_image (pubkey_paths[i], kernel_img + offset); - offset +=ALIGN_ADDR (curs); +memset (kernel_img + offset + orig_size,0 , key_size - orig_size); + offset += key_size; } }
@@ -1167,6 +1170,7 @@ grub_install_generate_image (const char *dir, const char *prefix, offset +=sizeof (*header);grub_util_load_image (memdisk_path, kernel_img + offset); +memset (kernel_img + offset + memdisk_size_pure,0 , memdisk_size - memdisk_size_pure); offset += memdisk_size; }
@@ -1181,7 +1185,7 @@ grub_install_generate_image (const char *dir, const char *prefix, offset +=sizeof (*header);grub_util_load_image (config_path, kernel_img + offset); - *(kernel_img + offset + config_size_pure -1 ) =0 ; +memset (kernel_img + offset + config_size_pure,0 , config_size - config_size_pure); offset += config_size; }
@@ -1267,17 +1271,10 @@ grub_install_generate_image (const char *dir, const char *prefix, = grub_host_to_target_addr (image_target->link_addr); } full_size = core_size + decompress_size; - full_img =xmalloc (full_size); -memset (full_img,0 , full_size); -memcpy (full_img, decompress_img, decompress_size); -memcpy (full_img + decompress_size, core_img, core_size); -memset (full_img + decompress_size + core_size,0 , - full_size - (decompress_size + core_size)); -free (core_img); core_img = full_img; core_size = full_size;
Signature · 1 line
tg: (2066766..) u/mkimage-zero-pad (depends on: master)
Quoted 7 lines · Andrei Borzenkov
This did not cause real problem but is good for reproducible builds. I hit it with recent bootinfoscript that displays embedded config; I was puzzled by random garbage at the end.
Also remove redundant zeroing code where we fill in the whole memory block anyway.
Could we just zero-out the whole block when we allocate it to have an easier code and avoid it happening again?
Quoted 100 lines
--- util/mkimage.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)util/mkimage.c +13
-16@@ -992,7 +992,7 @@ grub_install_generate_image (const char *dir, const char *prefix, {char *kernel_img, *core_img;size_t kernel_size, total_module_size, core_size, exec_size; -size_t memdisk_size =0 , config_size =0 , config_size_pure =0 ; +size_t memdisk_size =0 , memdisk_size_pure =0 , config_size =0 , config_size_pure =0 ;size_t prefix_size =0 ;char *kernel_path;size_t offset;@@ -1035,7 +1035,8 @@ grub_install_generate_image (const char *dir, const char *prefix,if (memdisk_path) { - memdisk_size =ALIGN_UP (grub_util_get_image_size (memdisk_path),512 ); + memdisk_size_pure =grub_util_get_image_size (memdisk_path); + memdisk_size =ALIGN_UP (memdisk_size_pure,512 );grub_util_info ("the size of memory disk is 0x%" GRUB_HOST_PRIxLONG_LONG, (unsigned long long ) memdisk_size); total_module_size += memdisk_size +sizeof (struct grub_module_header );@@ -1043,8 +1044,8 @@ grub_install_generate_image (const char *dir, const char *prefix,if (config_path) { - config_size_pure =grub_util_get_image_size (config_path) +1 ; - config_size =ALIGN_ADDR (config_size_pure); + config_size_pure =grub_util_get_image_size (config_path); + config_size =ALIGN_ADDR (config_size_pure +1 );grub_util_info ("the size of config file is 0x%" GRUB_HOST_PRIxLONG_LONG, (unsigned long long ) config_size); total_module_size += config_size +sizeof (struct grub_module_header );@@ -1140,19 +1141,21 @@ grub_install_generate_image (const char *dir, const char *prefix,size_t i;for (i =0 ; i < npubkeys; i++) { -size_t curs;struct grub_module_header *header; +size_t key_size, orig_size; - curs =grub_util_get_image_size (pubkey_paths[i]); + orig_size =grub_util_get_image_size (pubkey_paths[i]); + key_size =ALIGN_ADDR (orig_size); header = (struct grub_module_header *) (kernel_img + offset);memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PUBKEY ); - header->size =grub_host_to_target32 (curs +sizeof (*header)); + header->size =grub_host_to_target32 (key_size +sizeof (*header)); offset +=sizeof (*header);grub_util_load_image (pubkey_paths[i], kernel_img + offset); - offset +=ALIGN_ADDR (curs); +memset (kernel_img + offset + orig_size,0 , key_size - orig_size); + offset += key_size; } }@@ -1167,6 +1170,7 @@ grub_install_generate_image (const char *dir, const char *prefix, offset +=sizeof (*header);grub_util_load_image (memdisk_path, kernel_img + offset); +memset (kernel_img + offset + memdisk_size_pure,0 , memdisk_size - memdisk_size_pure); offset += memdisk_size; }@@ -1181,7 +1185,7 @@ grub_install_generate_image (const char *dir, const char *prefix, offset +=sizeof (*header);grub_util_load_image (config_path, kernel_img + offset); - *(kernel_img + offset + config_size_pure -1 ) =0 ; +memset (kernel_img + offset + config_size_pure,0 , config_size - config_size_pure); offset += config_size; }@@ -1267,17 +1271,10 @@ grub_install_generate_image (const char *dir, const char *prefix, = grub_host_to_target_addr (image_target->link_addr); } full_size = core_size + decompress_size; - full_img =xmalloc (full_size); -memset (full_img,0 , full_size); -memcpy (full_img, decompress_img, decompress_size); -memcpy (full_img + decompress_size, core_img, core_size); -memset (full_img + decompress_size + core_size,0 , - full_size - (decompress_size + core_size)); -free (core_img); core_img = full_img; core_size = full_size;
PATCH v2 1/1 mkimage: zero fill alignment space
This did not cause real problem but is good for reproducible builds. I hit it with recent bootinfoscript that displays embedded config; I was puzzled by random garbage at the end.
Prezero memory buffer used to assemble core.img. This makes individual memset redundant. Also ensure buffer is filled with zeroes in several other places.
Also remove redundant zeroing code where we fill in the whole memory block anyway.
--- util/grub-mkimagexx.c | 3 ++- util/mkimage.c | 30 +++++++++--------------------- 2 files changed, 11 insertions(+), 22 deletions(-)
util/grub-mkimagexx.c +2 -1
@@ -101,7 +101,7 @@ SUFFIX (generate_elf) (const struct grub_install_image_target_desc *image_target program_size =ALIGN_ADDR (*core_size); elf_img =xmalloc (program_size + header_size + footer_size); -memset (elf_img,0 , program_size + header_size); +memset (elf_img,0 , program_size + header_size + footer_size);memcpy (elf_img + header_size, *core_img, *core_size); ehdr = (void *) elf_img; phdr = (void *) (elf_img +sizeof (*ehdr));
@@ -1587,6 +1587,7 @@ SUFFIX (load_image) (const char *kernel_path, size_t *exec_size, } out_img =xmalloc (*kernel_sz + total_module_size); +memset (out_img,0 , *kernel_sz + total_module_size);if (image_target->id ==IMAGE_EFI ) {
util/mkimage.c +9 -21
@@ -992,7 +992,7 @@ grub_install_generate_image (const char *dir, const char *prefix, {char *kernel_img, *core_img;size_t kernel_size, total_module_size, core_size, exec_size; -size_t memdisk_size =0 , config_size =0 , config_size_pure =0 ; +size_t memdisk_size =0 , config_size =0 ;size_t prefix_size =0 ;char *kernel_path;size_t offset;
@@ -1043,8 +1043,7 @@ grub_install_generate_image (const char *dir, const char *prefix,if (config_path) { - config_size_pure =grub_util_get_image_size (config_path) +1 ; - config_size =ALIGN_ADDR (config_size_pure); + config_size =ALIGN_ADDR (grub_util_get_image_size (config_path) +1 );grub_util_info ("the size of config file is 0x%" GRUB_HOST_PRIxLONG_LONG, (unsigned long long ) config_size); total_module_size += config_size +sizeof (struct grub_module_header );
@@ -1080,7 +1079,10 @@ grub_install_generate_image (const char *dir, const char *prefix, = grub_host_to_target32 (total_module_size);if (image_target->flags &PLATFORM_FLAGS_MODULES_BEFORE_KERNEL ) -memmove (kernel_img + total_module_size, kernel_img, kernel_size); + { +memmove (kernel_img + total_module_size, kernel_img, kernel_size); +memset (kernel_img,0 , total_module_size); + }if (image_target->voidp_sizeof ==8 ) {
@@ -1090,7 +1092,6 @@ grub_install_generate_image (const char *dir, const char *prefix, modinfo = (struct grub_module_info64 *) kernel_img; else modinfo = (struct grub_module_info64 *) (kernel_img + kernel_size); -memset (modinfo,0 ,sizeof (struct grub_module_info64 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset =grub_host_to_target_addr (sizeof (struct grub_module_info64 )); modinfo->size =grub_host_to_target_addr (total_module_size);
@@ -1107,7 +1108,6 @@ grub_install_generate_image (const char *dir, const char *prefix, modinfo = (struct grub_module_info32 *) kernel_img; else modinfo = (struct grub_module_info32 *) (kernel_img + kernel_size); -memset (modinfo,0 ,sizeof (struct grub_module_info32 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset =grub_host_to_target_addr (sizeof (struct grub_module_info32 )); modinfo->size =grub_host_to_target_addr (total_module_size);
@@ -1120,17 +1120,14 @@ grub_install_generate_image (const char *dir, const char *prefix,for (p = path_list; p; p = p->next) {struct grub_module_header *header; -size_t mod_size, orig_size; +size_t mod_size; - orig_size =grub_util_get_image_size (p->name); - mod_size =ALIGN_ADDR (orig_size); + mod_size =ALIGN_ADDR (grub_util_get_image_size (p->name)); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_ELF ); header->size =grub_host_to_target32 (mod_size +sizeof (*header)); offset +=sizeof (*header); -memset (kernel_img + offset + orig_size,0 , mod_size - orig_size);grub_util_load_image (p->name, kernel_img + offset); offset += mod_size;
@@ -1146,7 +1143,6 @@ grub_install_generate_image (const char *dir, const char *prefix, curs =grub_util_get_image_size (pubkey_paths[i]); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PUBKEY ); header->size =grub_host_to_target32 (curs +sizeof (*header)); offset +=sizeof (*header);
@@ -1161,7 +1157,6 @@ grub_install_generate_image (const char *dir, const char *prefix,struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_MEMDISK ); header->size =grub_host_to_target32 (memdisk_size +sizeof (*header)); offset +=sizeof (*header);
@@ -1175,13 +1170,11 @@ grub_install_generate_image (const char *dir, const char *prefix,struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_CONFIG ); header->size =grub_host_to_target32 (config_size +sizeof (*header)); offset +=sizeof (*header);grub_util_load_image (config_path, kernel_img + offset); - *(kernel_img + offset + config_size_pure -1 ) =0 ; offset += config_size; }
@@ -1190,12 +1183,10 @@ grub_install_generate_image (const char *dir, const char *prefix,struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PREFIX ); header->size =grub_host_to_target32 (prefix_size +sizeof (*header)); offset +=sizeof (*header); -grub_memset (kernel_img + offset,0 , prefix_size);grub_strcpy (kernel_img + offset, prefix); offset += prefix_size; }
@@ -1269,15 +1260,11 @@ grub_install_generate_image (const char *dir, const char *prefix, full_size = core_size + decompress_size; full_img =xmalloc (full_size); -memset (full_img,0 , full_size);memcpy (full_img, decompress_img, decompress_size);memcpy (full_img + decompress_size, core_img, core_size); -memset (full_img + decompress_size + core_size,0 , - full_size - (decompress_size + core_size)); -free (core_img); core_img = full_img; core_size = full_size;
@@ -1428,6 +1415,7 @@ grub_install_generate_image (const char *dir, const char *prefix, pe_img =xmalloc (reloc_addr + reloc_size);memset (pe_img,0 , header_size);memcpy ((char *) pe_img + header_size, core_img, core_size); +memset ((char *) pe_img + header_size + core_size,0 , reloc_addr - (header_size + core_size));memcpy ((char *) pe_img + reloc_addr, rel_section, reloc_size); header = pe_img;
Signature · 1 line
tg: (2066766..) u/mkimage-zero-pad (depends on: master)
Go ahead
Quoted 206 lines · Andrei Borzenkov
This did not cause real problem but is good for reproducible builds. I hit it with recent bootinfoscript that displays embedded config; I was puzzled by random garbage at the end.
Prezero memory buffer used to assemble core.img. This makes individual memset redundant. Also ensure buffer is filled with zeroes in several other places.
Also remove redundant zeroing code where we fill in the whole memory block anyway.
--- util/grub-mkimagexx.c | 3 ++- util/mkimage.c | 30 +++++++++--------------------- 2 files changed, 11 insertions(+), 22 deletions(-)util/grub-mkimagexx.c +0
-0@@ -101,7 +101,7 @@ SUFFIX (generate_elf) (const struct
grub_install_image_target_desc*image_target
program_size=ALIGN_ADDR(*core_size);elf_img = xmalloc (program_size + header_size + footer_size);util/grub-mkimagexx.c +2
-1-memset (elf_img,0 , program_size + header_size); +memset (elf_img,0 , program_size + header_size + footer_size);memcpy (elf_img + header_size, *core_img, *core_size); ehdr = (void *) elf_img; phdr = (void *) (elf_img +sizeof (*ehdr));@@ -1587,6 +1587,7 @@ SUFFIX (load_image) (const char *kernel_path, size_t *exec_size, } out_img =xmalloc (*kernel_sz + total_module_size); +memset (out_img,0 , *kernel_sz + total_module_size);if (image_target->id ==IMAGE_EFI ){util/mkimage.c +1
-1@@ -992,7 +992,7 @@ grub_install_generate_image (const char *dir, constchar *prefix, { char *kernel_img, *core_img;size_t kernel_size, total_module_size, core_size, exec_size; -size_t memdisk_size =0 , config_size =0 , config_size_pure =0 ; +size_t memdisk_size =0 , config_size =0 ;size_t prefix_size =0 ;char *kernel_path;size_t offset;util/mkimage.c +1
-2@@ -1043,8 +1043,7 @@ grub_install_generate_image (const char *dir, constchar *prefix, if (config_path) { - config_size_pure =grub_util_get_image_size (config_path) +1 ; - config_size =ALIGN_ADDR (config_size_pure); + config_size = ALIGN_ADDR (grub_util_get_image_size (config_path) +1 ); grub_util_info ("the size of config file is 0x%"
GRUB_HOST_PRIxLONG_LONG,(unsigned long long) config_size); total_module_size += config_size + sizeof (struct
grub_module_header);util/mkimage.c +4
-1@@ -1080,7 +1079,10 @@ grub_install_generate_image (const char *dir, constchar *prefix, = grub_host_to_target32 (total_module_size);if (image_target->flags &PLATFORM_FLAGS_MODULES_BEFORE_KERNEL ) -memmove (kernel_img + total_module_size, kernel_img, kernel_size); + { +memmove (kernel_img + total_module_size, kernel_img, kernel_size); +memset (kernel_img,0 , total_module_size); + }if (image_target->voidp_sizeof ==8 ){util/mkimage.c +0
-1@@ -1090,7 +1092,6 @@ grub_install_generate_image (const char *dir, constchar *prefix, modinfo = (struct grub_module_info64 *) kernel_img; else modinfo = (struct grub_module_info64 *) (kernel_img + kernel_size); -memset (modinfo,0 ,sizeof (struct grub_module_info64 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset = grub_host_to_target_addr (sizeof (structgrub_module_info64)); modinfo->size = grub_host_to_target_addr (total_module_size);util/mkimage.c +0
-1@@ -1107,7 +1108,6 @@ grub_install_generate_image (const char *dir, constchar *prefix, modinfo = (struct grub_module_info32 *) kernel_img; else modinfo = (struct grub_module_info32 *) (kernel_img + kernel_size); -memset (modinfo,0 ,sizeof (struct grub_module_info32 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset = grub_host_to_target_addr (sizeof (structgrub_module_info32)); modinfo->size = grub_host_to_target_addr (total_module_size);util/mkimage.c +2
-5@@ -1120,17 +1120,14 @@ grub_install_generate_image (const char *dir,const char *prefix, for (p = path_list; p; p = p->next) {struct grub_module_header *header; -size_t mod_size, orig_size; +size_t mod_size; - orig_size =grub_util_get_image_size (p->name); - mod_size =ALIGN_ADDR (orig_size); + mod_size =ALIGN_ADDR (grub_util_get_image_size (p->name)); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_ELF ); header->size =grub_host_to_target32 (mod_size +sizeof (*header)); offset +=sizeof (*header); -memset (kernel_img + offset + orig_size,0 , mod_size - orig_size);grub_util_load_image (p->name, kernel_img + offset);offset += mod_size;util/mkimage.c +0
-1@@ -1146,7 +1143,6 @@ grub_install_generate_image (const char *dir, constchar *prefix, curs =grub_util_get_image_size (pubkey_paths[i]); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PUBKEY ); header->size =grub_host_to_target32 (curs +sizeof (*header));offset += sizeof (*header);util/mkimage.c +0
-1@@ -1161,7 +1157,6 @@ grub_install_generate_image (const char *dir, constchar *prefix, struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_MEMDISK ); header->size = grub_host_to_target32 (memdisk_size + sizeof(*header)); offset += sizeof (*header);util/mkimage.c +0
-2@@ -1175,13 +1170,11 @@ grub_install_generate_image (const char *dir,const char *prefix, struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_CONFIG ); header->size =grub_host_to_target32 (config_size +sizeof (*header)); offset +=sizeof (*header);grub_util_load_image (config_path, kernel_img + offset); - *(kernel_img + offset + config_size_pure -1 ) =0 ; offset += config_size;}util/mkimage.c +0
-2@@ -1190,12 +1183,10 @@ grub_install_generate_image (const char *dir,const char *prefix, struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PREFIX ); header->size =grub_host_to_target32 (prefix_size +sizeof (*header)); offset +=sizeof (*header); -grub_memset (kernel_img + offset,0 , prefix_size);grub_strcpy (kernel_img + offset, prefix);offset += prefix_size; }util/mkimage.c +0
-4@@ -1269,15 +1260,11 @@ grub_install_generate_image (const char *dir,const char *prefix, full_size = core_size + decompress_size; full_img =xmalloc (full_size); -memset (full_img,0 , full_size);memcpy (full_img, decompress_img, decompress_size);memcpy (full_img + decompress_size, core_img, core_size); -memset (full_img + decompress_size + core_size,0 , - full_size - (decompress_size + core_size)); -free (core_img); core_img = full_img;core_size = full_size;util/mkimage.c +1
-0@@ -1428,6 +1415,7 @@ grub_install_generate_image (const char *dir, constchar *prefix, pe_img =xmalloc (reloc_addr + reloc_size);memset (pe_img,0 , header_size);memcpy ((char *) pe_img + header_size, core_img, core_size); +memset ((char *) pe_img + header_size + core_size,0 , reloc_addr - (header_size + core_size));memcpy ((char *) pe_img + reloc_addr, rel_section, reloc_size);header = pe_img;--
tg: (2066766..) u/mkimage-zero-pad (depends on: master)_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel
Quoted 3 lines · Vladimir 'phcoder' Serbinenko
Go ahead
Actually please wait till Savannah admins kill the empty commit
Quoted 1 line
Le 31 oct. 2015 9:39 AM, "Andrei Borzenkov" <[email protected]> a
écrit :
Quoted 2 lines
Quoted 2 lines
This did not cause real problem but is good for reproducible builds. I
hit
Quoted 1 line
Quoted 1 line
it with recent bootinfoscript that displays embedded config; I was
puzzled
Quoted 4 lines
Quoted 4 lines
by random garbage at the end.
Prezero memory buffer used to assemble core.img. This makes individual memset redundant. Also ensure buffer is filled with zeroes in several
other
Quoted 3 lines
Quoted 3 lines
places.
Also remove redundant zeroing code where we fill in the whole memory
block
Quoted 7 lines
Quoted 7 lines
anyway.
--- util/grub-mkimagexx.c | 3 ++- util/mkimage.c | 30 +++++++++--------------------- 2 files changed, 11 insertions(+), 22 deletions(-)
Quoted 5 lines
util/grub-mkimagexx.c SUFFIX (generate_elf) (const struct
Quoted 5 lines
util/grub-mkimagexx.c +0
-0@@ -101,7 +101,7 @@ SUFFIX (generate_elf) (const struct
grub_install_image_target_desc *image_target
Quoted 9 lines
util/grub-mkimagexx.c SUFFIX (load_image) (const char *kernel_path,
Quoted 9 lines
util/grub-mkimagexx.c +1
-1program_size =ALIGN_ADDR (*core_size); elf_img =xmalloc (program_size + header_size + footer_size); -memset (elf_img,0 , program_size + header_size); +memset (elf_img,0 , program_size + header_size + footer_size);memcpy (elf_img + header_size, *core_img, *core_size); ehdr = (void *) elf_img; phdr = (void *) (elf_img +sizeof (*ehdr));@@ -1587,6 +1587,7 @@ SUFFIX (load_image) (const char *kernel_path,
size_t *exec_size,
Quoted 5 lines
Quoted 5 lines
util/grub-mkimagexx.c +1
-0} out_img =xmalloc (*kernel_sz + total_module_size); +memset (out_img,0 , *kernel_sz + total_module_size);
Quoted 7 lines
util/mkimage.c grub_install_generate_image (const char *dir, const
Quoted 7 lines
util/grub-mkimagexx.c +0
-0if (image_target->id ==IMAGE_EFI ) {util/mkimage.c +0
-0@@ -992,7 +992,7 @@ grub_install_generate_image (const char *dir, const
char *prefix,
Quoted 9 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 9 lines
util/mkimage.c +1
-1{char *kernel_img, *core_img;size_t kernel_size, total_module_size, core_size, exec_size; -size_t memdisk_size =0 , config_size =0 , config_size_pure =0 ; +size_t memdisk_size =0 , config_size =0 ;size_t prefix_size =0 ;char *kernel_path;size_t offset;@@ -1043,8 +1043,7 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 6 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 6 lines
util/mkimage.c +1
-2if (config_path) { - config_size_pure =grub_util_get_image_size (config_path) +1 ; - config_size =ALIGN_ADDR (config_size_pure); + config_size = ALIGN_ADDR (grub_util_get_image_size (config_path)
+ 1);
Quoted 1 line
util/mkimage.c grub_install_generate_image (const char *dir, · line 1046
Quoted 1 line
util/mkimage.c +0
-0grub_util_info ("the size of config file is 0x%"
GRUB_HOST_PRIxLONG_LONG,
Quoted 2 lines
util/mkimage.c grub_install_generate_image (const char *dir, · line 1048
Quoted 2 lines
util/mkimage.c +0
-0(unsigned long long) config_size); total_module_size += config_size + sizeof (struct
grub_module_header);
Quoted 1 line
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 1 line
util/mkimage.c +0
-0@@ -1080,7 +1079,10 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 9 lines
Quoted 9 lines
util/mkimage.c +4
-1= grub_host_to_target32 (total_module_size);if (image_target->flags &PLATFORM_FLAGS_MODULES_BEFORE_KERNEL ) -memmove (kernel_img + total_module_size, kernel_img, kernel_size); + { +memmove (kernel_img + total_module_size, kernel_img, kernel_size); +memset (kernel_img,0 , total_module_size); + }
Quoted 3 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 3 lines
util/mkimage.c +0
-0if (image_target->voidp_sizeof ==8 ) {@@ -1090,7 +1092,6 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 3 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 3 lines
util/mkimage.c +0
-0modinfo = (struct grub_module_info64 *) kernel_img; else modinfo = (struct grub_module_info64 *) (kernel_img +
kernel_size);
Quoted 3 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 3 lines
util/mkimage.c +0
-1-memset (modinfo,0 ,sizeof (struct grub_module_info64 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset = grub_host_to_target_addr (sizeof (struct
grub_module_info64));
Quoted 2 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 2 lines
util/mkimage.c +0
-0modinfo->size =grub_host_to_target_addr (total_module_size);@@ -1107,7 +1108,6 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 3 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 3 lines
util/mkimage.c +0
-0modinfo = (struct grub_module_info32 *) kernel_img; else modinfo = (struct grub_module_info32 *) (kernel_img +
kernel_size);
Quoted 3 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 3 lines
util/mkimage.c +0
-1-memset (modinfo,0 ,sizeof (struct grub_module_info32 )); modinfo->magic =grub_host_to_target32 (GRUB_MODULE_MAGIC ); modinfo->offset = grub_host_to_target_addr (sizeof (struct
grub_module_info32));
Quoted 2 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 2 lines
util/mkimage.c +0
-0modinfo->size =grub_host_to_target_addr (total_module_size);@@ -1120,17 +1120,14 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 6 lines
Quoted 6 lines
util/mkimage.c +1
-1for (p = path_list; p; p = p->next) {struct grub_module_header *header; -size_t mod_size, orig_size; +size_t mod_size;
Quoted 8 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 8 lines
util/mkimage.c +1
-3- orig_size =grub_util_get_image_size (p->name); - mod_size =ALIGN_ADDR (orig_size); + mod_size =ALIGN_ADDR (grub_util_get_image_size (p->name)); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_ELF ); header->size = grub_host_to_target32 (mod_size + sizeof
(*header));
Quoted 6 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 6 lines
util/mkimage.c +0
-1offset +=sizeof (*header); -memset (kernel_img + offset + orig_size,0 , mod_size - orig_size);grub_util_load_image (p->name, kernel_img + offset); offset += mod_size;@@ -1146,7 +1143,6 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 8 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 8 lines
util/mkimage.c +0
-1curs =grub_util_get_image_size (pubkey_paths[i]); header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PUBKEY ); header->size =grub_host_to_target32 (curs +sizeof (*header)); offset +=sizeof (*header);@@ -1161,7 +1157,6 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 6 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 6 lines
util/mkimage.c +0
-1struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_MEMDISK ); header->size = grub_host_to_target32 (memdisk_size + sizeof
(*header));
Quoted 2 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 2 lines
util/mkimage.c +0
-0offset +=sizeof (*header);@@ -1175,13 +1170,11 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 6 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 6 lines
util/mkimage.c +0
-1struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_CONFIG ); header->size = grub_host_to_target32 (config_size + sizeof
(*header));
Quoted 8 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 8 lines
util/mkimage.c +0
-1offset +=sizeof (*header);grub_util_load_image (config_path, kernel_img + offset); - *(kernel_img + offset + config_size_pure -1 ) =0 ; offset += config_size; }@@ -1190,12 +1183,10 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 6 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 6 lines
util/mkimage.c +0
-1struct grub_module_header *header; header = (struct grub_module_header *) (kernel_img + offset); -memset (header,0 ,sizeof (struct grub_module_header )); header->type =grub_host_to_target32 (OBJ_TYPE_PREFIX ); header->size = grub_host_to_target32 (prefix_size + sizeof
(*header));
Quoted 7 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 7 lines
util/mkimage.c +0
-1offset +=sizeof (*header); -grub_memset (kernel_img + offset,0 , prefix_size);grub_strcpy (kernel_img + offset, prefix); offset += prefix_size; }@@ -1269,15 +1260,11 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 9 lines
Quoted 9 lines
util/mkimage.c +0
-1full_size = core_size + decompress_size; full_img =xmalloc (full_size); -memset (full_img,0 , full_size);memcpy (full_img, decompress_img, decompress_size);memcpy (full_img + decompress_size, core_img, core_size);
Quoted 7 lines
util/mkimage.c grub_install_generate_image (const char *dir,
Quoted 7 lines
util/mkimage.c +0
-3-memset (full_img + decompress_size + core_size,0 , - full_size - (decompress_size + core_size)); -free (core_img); core_img = full_img; core_size = full_size;@@ -1428,6 +1415,7 @@ grub_install_generate_image (const char *dir,
const char *prefix,
Quoted 4 lines
util/mkimage.c grub_install_generate_image (const char *dir, const char *prefix,
Quoted 4 lines
util/mkimage.c +1
-0pe_img =xmalloc (reloc_addr + reloc_size);memset (pe_img,0 , header_size);memcpy ((char *) pe_img + header_size, core_img, core_size); + memset ((char *) pe_img + header_size + core_size, 0, reloc_addr
- (header_size + core_size));
Quoted 10 lines
Quoted 10 lines
util/mkimage.c +0
-1memcpy ((char *) pe_img + reloc_addr, rel_section, reloc_size); header = pe_img; --tg: (2066766..) u/mkimage-zero-pad (depends on: master)
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel