Итак, у меня есть программа, в которой я создаю массив структур, а затем просматриваю каждую структуру и вставляю значения в каждую. Единственная проблема, когда я пытаюсь вставить эти значения, я сталкиваюсь с ошибкой сегментации. Простите, я начинающий программист на Си, но я огляделся и не смог найти ответ на свою проблему.
Вот код (переработан для простоты):
#include "readelf.h"
int main(int ac, char **av)
{
int elf_shnum, sh_name_index, i;
Section_t *sections;
i = 0;
elf_shnum = 12;
sh_name_index = 24;
sections = malloc(elf_shnum * sizeof(Section_t));
sections[i].header->sh_name = sh_name_index;
return (0);
}
включаемый файл:
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdint.h>
#include <elf.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
typedef struct
{
uint64_t sh_name; /* Section name (string tbl index) */
uint64_t sh_type; /* Section type */
uint64_t sh_flags; /* Section flags */
uint64_t sh_addr; /* Section virtual addr at execution */
uint64_t sh_offset; /* Section file offset */
uint64_t sh_size; /* Section size in bytes */
uint64_t sh_link; /* Link to another section */
uint64_t sh_info; /* Additional section information */
uint64_t sh_addralign; /* Section alignment */
uint64_t sh_entsize; /* Entry size if section holds table */
} Elf_Big_Shdr_t;
typedef union
{
Elf32_Shdr Elf32;
Elf64_Shdr Elf64;
} Elf_Shdr_t;
typedef struct
{
Elf_Big_Shdr_t *header;
unsigned char *data;
} Section_t;