On Wed, Mar 15, 2023 at 5:57 AM Michael Paquier <michael@paquier.xyz> wrote:
On Tue, Mar 14, 2023 at 01:26:27PM +0100, Juan José Santamaría Flecha wrote: > As highlighted in [1] fseek() might fail to error even when accessing > unseekable streams. > > PFA a patch that checks the file type before the actual fseek(), so only > supported calls are made.
+ * streams, so harden that funcion with our version. s/funcion/function/.
What about naming the internal wrappers _pgfseeko64() and _pgftello64(), located in a new file named win32fseek.c? It may be possible that we would need a similar treatment for fseek(), in the future, though I don't see an issue why this would be needed now.
Done.
+ if (GetFileType((HANDLE) _get_osfhandle(_fileno(stream))) != FILE_TYPE_DISK) + { + errno = ESPIPE; + return -1; + } Shouldn't there be cases where we should return EINVAL for some of the other types, like FILE_TYPE_REMOTE or FILE_TYPE_UNKNOWN? We should return ESPIPE only for FILE_TYPE_PIPE and FILE_TYPE_CHAR, then?