El fichero quijote tiene 65527 chars (bytes), lo maximo. Prueba que si pones uno mas ya no te deja. He modificado su "funcion" calcular_checksum haciendo que el primer argumento sea en vez de un uint16_t un uint32_t porque sino se desborda para checksums de segmentos longitudes mayores a 2^16 - 12.
Amen.