Add error handling for failing fstat() calls in copy.c.
authorAndres Freund <andres@anarazel.de>
Sun, 4 Jan 2015 15:47:23 +0000 (16:47 +0100)
committerAndres Freund <andres@anarazel.de>
Sun, 4 Jan 2015 15:47:23 +0000 (16:47 +0100)
These calls are pretty much guaranteed not to fail unless something
has gone horribly wrong, and even in that case we'd just error out a
short time later.  But since several code checkers complain about the
missing check it seems worthwile to fix it nonetheless.

Pointed out by Coverity.

src/backend/commands/copy.c

index 08abe141f4169f98d671fe22fc3be1151b48daa0..8b1c727b3399bfa0ea32f32fe0435c12f7be38c2 100644 (file)
@@ -1707,7 +1707,9 @@ BeginCopyTo(Relation rel,
                         errmsg("could not open file \"%s\" for writing: %m",
                                cstate->filename)));
 
-           fstat(fileno(cstate->copy_file), &st);
+           if (fstat(fileno(cstate->copy_file), &st))
+               elog(ERROR, "could not stat file \"%s\": %m", cstate->filename);
+
            if (S_ISDIR(st.st_mode))
                ereport(ERROR,
                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
@@ -2718,7 +2720,9 @@ BeginCopyFrom(Relation rel,
                         errmsg("could not open file \"%s\" for reading: %m",
                                cstate->filename)));
 
-           fstat(fileno(cstate->copy_file), &st);
+           if (fstat(fileno(cstate->copy_file), &st))
+               elog(ERROR, "could not stat file \"%s\": %m", cstate->filename);
+
            if (S_ISDIR(st.st_mode))
                ereport(ERROR,
                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),