summaryrefslogtreecommitdiffstats
path: root/Source/cmListFileLexer.c
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2017-02-19 17:26:44 (GMT)
committerBrad King <brad.king@kitware.com>2017-02-27 14:14:28 (GMT)
commitded616bdad46a445ea7ae05d47ae8f32026b13b5 (patch)
treeba3a048d94b1aadb5fb728885fbd9b02bc691ba9 /Source/cmListFileLexer.c
parent32cb4172bd6b98810f9638076e978a6bc569f6ae (diff)
downloadCMake-ded616bdad46a445ea7ae05d47ae8f32026b13b5.zip
CMake-ded616bdad46a445ea7ae05d47ae8f32026b13b5.tar.gz
CMake-ded616bdad46a445ea7ae05d47ae8f32026b13b5.tar.bz2
cmListFileLexer: bail out on seek-errors
If we are given a FIFO, for example, we cannot seek back after trying to read a Byte-Order-Mark. Closes: #16607
Diffstat (limited to 'Source/cmListFileLexer.c')
-rw-r--r--Source/cmListFileLexer.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Source/cmListFileLexer.c b/Source/cmListFileLexer.c
index 56559f6..44d0894 100644
--- a/Source/cmListFileLexer.c
+++ b/Source/cmListFileLexer.c
@@ -2559,11 +2559,15 @@ static cmListFileLexer_BOM cmListFileLexer_ReadBOM(FILE* f)
if (fread(b, 1, 2, f) == 2 && b[0] == 0 && b[1] == 0) {
return cmListFileLexer_BOM_UTF32LE;
}
- fsetpos(f, &p);
+ if (fsetpos(f, &p) != 0) {
+ return cmListFileLexer_BOM_Broken;
+ }
return cmListFileLexer_BOM_UTF16LE;
}
}
- rewind(f);
+ if (fseek(f, 0, SEEK_SET) != 0) {
+ return cmListFileLexer_BOM_Broken;
+ }
return cmListFileLexer_BOM_None;
}