Module Name: src
Committed By: wiz
Date: Wed Jan 5 15:48:01 UTC 2011
Modified Files:
src/games/tetris: scores.c
Log Message:
Fix fd leak in error cases. Found by cppcheck.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/games/tetris/scores.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/games/tetris/scores.c
diff -u src/games/tetris/scores.c:1.19 src/games/tetris/scores.c:1.20
--- src/games/tetris/scores.c:1.19 Wed Feb 3 15:34:39 2010
+++ src/games/tetris/scores.c Wed Jan 5 15:48:00 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: scores.c,v 1.19 2010/02/03 15:34:39 roy Exp $ */
+/* $NetBSD: scores.c,v 1.20 2011/01/05 15:48:00 wiz Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -458,8 +458,7 @@
result = read(sd, &header, sizeof(header));
if (result < 0) {
warn("Score file %s: read", _PATH_SCOREFILE);
- close(sd);
- goto fail;
+ goto sdfail;
}
if (result != 0 && (size_t)result != sizeof(header)) {
warnx("Score file %s: read: unexpected EOF", _PATH_SCOREFILE);
@@ -470,13 +469,12 @@
if (lseek(sd, 0, SEEK_SET) < 0) {
/* ? */
warn("Score file %s: lseek", _PATH_SCOREFILE);
- goto fail;
+ goto sdfail;
}
if (ftruncate(sd, 0) == 0) {
result = 0;
} else {
- close(sd);
- goto fail;
+ goto sdfail;
}
}
@@ -501,17 +499,17 @@
} else {
warnx("Score file %s: Unknown endian tag %u",
_PATH_SCOREFILE, header.hsh_endiantag);
- goto fail;
+ goto sdfail;
}
if (header.hsh_version != HSH_VERSION) {
warnx("Score file %s: Unknown version code %u",
_PATH_SCOREFILE, header.hsh_version);
- goto fail;
+ goto sdfail;
}
if (readscores(sd, doflip) < 0) {
- goto fail;
+ goto sdfail;
}
} else {
/*
@@ -521,7 +519,7 @@
result = scorefile_probe(sd);
if (lseek(sd, 0, SEEK_SET) < 0) {
warn("Score file %s: lseek", _PATH_SCOREFILE);
- goto fail;
+ goto sdfail;
}
switch (result) {
case SCOREFILE_CURRENT:
@@ -543,10 +541,10 @@
result = readscores50(sd, 1 /* do flip */);
break;
default:
- goto fail;
+ goto sdfail;
}
if (result < 0) {
- goto fail;
+ goto sdfail;
}
}
}
@@ -559,6 +557,8 @@
return;
+sdfail:
+ close(sd);
fail:
if (fdp != NULL) {
*fdp = -1;