Lines Matching refs:phdr

185 static bool elf_is_phdr_sane(const struct elf_phdr *phdr, size_t buf_len)
188 if (phdr->p_offset + phdr->p_filesz < phdr->p_offset) {
191 } else if (phdr->p_offset + phdr->p_filesz > buf_len) {
194 } else if (phdr->p_paddr + phdr->p_memsz < phdr->p_paddr) {
207 struct elf_phdr *phdr = (struct elf_phdr *) &elf_info->proghdrs[idx];
215 phdr->p_type = elf32_to_cpu(elf_info->ehdr, buf_phdr->p_type);
216 phdr->p_flags = elf32_to_cpu(elf_info->ehdr, buf_phdr->p_flags);
220 phdr->p_offset = elf64_to_cpu(ehdr, buf_phdr->p_offset);
221 phdr->p_paddr = elf64_to_cpu(ehdr, buf_phdr->p_paddr);
222 phdr->p_vaddr = elf64_to_cpu(ehdr, buf_phdr->p_vaddr);
223 phdr->p_filesz = elf64_to_cpu(ehdr, buf_phdr->p_filesz);
224 phdr->p_memsz = elf64_to_cpu(ehdr, buf_phdr->p_memsz);
225 phdr->p_align = elf64_to_cpu(ehdr, buf_phdr->p_align);
229 phdr->p_offset = elf32_to_cpu(ehdr, buf_phdr->p_offset);
230 phdr->p_paddr = elf32_to_cpu(ehdr, buf_phdr->p_paddr);
231 phdr->p_vaddr = elf32_to_cpu(ehdr, buf_phdr->p_vaddr);
232 phdr->p_filesz = elf32_to_cpu(ehdr, buf_phdr->p_filesz);
233 phdr->p_memsz = elf32_to_cpu(ehdr, buf_phdr->p_memsz);
234 phdr->p_align = elf32_to_cpu(ehdr, buf_phdr->p_align);
242 return elf_is_phdr_sane(phdr, len) ? 0 : -ENOEXEC;
401 const struct elf_phdr *phdr;
403 phdr = &elf_info->proghdrs[i];
404 if (phdr->p_type != PT_LOAD)
407 size = phdr->p_filesz;
408 if (size > phdr->p_memsz)
409 size = phdr->p_memsz;
411 kbuf->buffer = (void *) elf_info->buffer + phdr->p_offset;
413 kbuf->memsz = phdr->p_memsz;
414 kbuf->buf_align = phdr->p_align;
415 kbuf->buf_min = phdr->p_paddr;