cal: Fix race condition between calling stat and opening file

This commit is contained in:
Pali Rohár committed 2017-01-08 14:33:08 +01:00
1 parent f0b8ee117b
commit 87867a5904
1 file changed
+3 -3
+3 -3
View File
@@ -76,14 +76,14 @@ int cal_init_file(const char * file, struct cal ** cal_out) {
off_t lsize = 0; off_t lsize = 0;
#endif #endif
if ( stat(file, &st) != 0 )
return -1;
fd = open(file, O_RDONLY); fd = open(file, O_RDONLY);
if ( fd < 0 ) if ( fd < 0 )
return -1; return -1;
if ( fstat(fd, &st) != 0 )
goto err;
if ( S_ISREG(st.st_mode) ) if ( S_ISREG(st.st_mode) )
size = st.st_size; size = st.st_size;
else if ( S_ISBLK(st.st_mode) ) { else if ( S_ISBLK(st.st_mode) ) {