Leia o conteúdo do arquivo com tamanho desconhecido

Eu quero processar o conteúdo de um arquivo de configuração. O arquivo de configuração pode ter qualquer tamanho. Estou recebendo um erro de barramento, após a interrupção do programa, quando executo o seguinte código:

FILE *fp;
struct stat st;
char *buffer;

fp = fopen(CONFIG_FILE, "r");
if (fp == NULL) {
    // error handling and cleanup omitted for brevity
}

fstat(fileno(fp), &st);
fread(buffer, sizeof(char), st.st_size, fp);
fprintf(stderr, "%s\n", *buffer);
fclose(fp);

Li que um erro de barramento pode ser causado por um estouro de buffer. Tenho certeza de que estou recebendo um estouro de buffer com o meuchar *buffer. Mas então,como posso especificar o tamanho do buffer em tempo de execuçã

EDITA - O erro do barramento foi causado pela minha preguiça de codificar1 na chamada falsa. O exemplo de código foi atualizado para corrigir isso, usandosizeof(char) em vez de

questionAnswers(3)

yourAnswerToTheQuestion