[libnl PATCH] Fix file descriptor leak on error
Thomas Jarosch
thomas.jarosch at intra2net.com
Thu Dec 27 04:44:30 EST 2012
Detected by cppcheck
Signed-off-by: Thomas Jarosch <thomas.jarosch at intra2net.com>
---
lib/utils.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/utils.c b/lib/utils.c
index 4007bee..50ca6d9 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -60,24 +60,32 @@ int __nl_read_num_str_file(const char *path, int (*cb)(long, const char *))
continue;
num = strtol(buf, &end, 0);
- if (end == buf)
+ if (end == buf) {
+ fclose(fd);
return -NLE_INVAL;
+ }
- if (num == LONG_MIN || num == LONG_MAX)
+ if (num == LONG_MIN || num == LONG_MAX) {
+ fclose(fd);
return -NLE_RANGE;
+ }
while (*end == ' ' || *end == '\t')
end++;
goodlen = strcspn(end, "#\r\n\t ");
- if (goodlen == 0)
+ if (goodlen == 0) {
+ fclose(fd);
return -NLE_INVAL;
+ }
end[goodlen] = '\0';
err = cb(num, end);
- if (err < 0)
+ if (err < 0) {
+ fclose(fd);
return err;
+ }
}
fclose(fd);
--
1.7.11.7
More information about the libnl
mailing list