dect
/
libnl
Archived
13
0
Fork 0

Fix file descriptor leak on error

Detected by cppcheck

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
This commit is contained in:
Thomas Jarosch 2012-12-27 10:44:30 +01:00 committed by Thomas Graf
parent de213328f8
commit 6971932254
1 changed files with 12 additions and 4 deletions

View File

@ -84,24 +84,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);