Entendendo o comportamento indefinido de um fluxo binário usando fseek (arquivo, 0, SEEK_END) com um arquivo

A especificação C tem uma nota de rodapé interessante (# 268 C11dr §7.21.3 9)

"Configurando o indicador de posição do arquivo para final de arquivo, comofseek(file, 0, SEEK_END), tem comportamento indefinido para um fluxo binário (devido a possíveis caracteres nulos à direita) ou para qualquer fluxo com codificação dependente do estado que não termine com segurança no estado de deslocamento inicial ".

Isso sempre se aplica a fluxos binários que leem um arquivo? (a partir de um dispositivo físico)

IMO, um arquivo binário em um disco é apenas um mar de bytes. Parece-me que um arquivo binário não pode ter codificação dependente do estado, pois é umbinário Arquivo. Estou confuso com o conceito de "fluxos binários de orientação ampla" e se isso poderia se aplicar à E / S do disco.

Eu vejo esse chamadofseek(file, 0, SEEK_END) em um fluxo serial como uma porta COM ou talvezstdin pode não chegar ao verdadeiro fim, pois ofim ainda está para ser determinado. Assim, o estreitamento da questão para arquivos físicos.

Resposta: Uma preocupação com os mais velhos (talvez até o final dos anos 80). Atualmente, em 2014, Windows, outros específicos para POSIT e não exóticos: não são um problema.

@ Shafik Yaghmour fornece uma boa referência emO uso de fseek e ftell para determinar o tamanho de um arquivo tem uma vulnerabilidade?. Lá @Jerry Coffin discuteCP / M como arquivos binários, nem sempre com um comprimento preciso. (Registros de 128 bytes por wiki).

Graças à resposta de @Keith Thompson pela carne da resposta.

Juntos, isso explica o comentário das especificações "(devido a possíveis caracteres nulos à direita)".

questionAnswers(1)

yourAnswerToTheQuestion