O programa não travou quando o buffer overflow

Eu quero ler uma string do teclado e armazenar embuf . Eu definir umchar buf[6] array, esta matriz, no máximo, pode armazenar 5 caracteres e\0 .

Então eu digito123 456 789 contém 11 caracteres e um\0 , o programa ainda pode ser executado, mas se eu digitar uma string mais longa123 456 789 123 456 789 ele irá falhar no tempo de execução. estas duas entradas também fora do intervalo debuf , mas um pode correr, o outro acidente?

Aqui está o meu código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void read_str();

int main(){
    read_str();
    system("pause");
    return 0;
}
void read_str(){

    char buf[6] = {};
    scanf("%[^\n]",buf);
    printf("%d\n",strlen(buf));
    printf("%s\n",buf);
}

questionAnswers(2)

yourAnswerToTheQuestion