diff options
Diffstat (limited to 'src/util/elf2efi.c')
| -rw-r--r-- | src/util/elf2efi.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/util/elf2efi.c b/src/util/elf2efi.c index 2c5b9df8a..bcd53c9af 100644 --- a/src/util/elf2efi.c +++ b/src/util/elf2efi.c @@ -458,6 +458,7 @@ static struct pe_section * process_section ( struct elf_file *elf, struct pe_header *pe_header ) { struct pe_section *new; const char *name; + size_t name_len; size_t section_memsz; size_t section_filesz; unsigned long code_start; @@ -494,7 +495,10 @@ static struct pe_section * process_section ( struct elf_file *elf, memset ( new, 0, sizeof ( *new ) + section_filesz ); /* Fill in section header details */ - strncpy ( ( char * ) new->hdr.Name, name, sizeof ( new->hdr.Name ) ); + name_len = strlen ( name ); + if ( name_len > sizeof ( new->hdr.Name ) ) + name_len = sizeof ( new->hdr.Name ); + memcpy ( new->hdr.Name, name, name_len ); new->hdr.Misc.VirtualSize = section_memsz; new->hdr.VirtualAddress = shdr->sh_addr; new->hdr.SizeOfRawData = section_filesz; |
