summaryrefslogtreecommitdiff
path: root/src/conntrack.c
diff options
context:
space:
mode:
authorHannes Eder <heder@google.com>2009-10-08 18:06:04 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2009-10-08 18:06:04 +0200
commit910d392806be7457f95aaab73e81abe20772bd05 (patch)
tree1ace5425e89105e01b4733ce76a9e6f73d5c0465 /src/conntrack.c
parenteb1127e0f72274bdcdcf6fdef96f1cbac5d19f02 (diff)
downloadconntrack-tools-910d392806be7457f95aaab73e81abe20772bd05.tar.gz
conntrack-tools-910d392806be7457f95aaab73e81abe20772bd05.zip
conntrack: use fscanf() instead of read() for showing counter
Read an integer right away with fscanf() instead of read()-ing to a buffer, which was actually to small for the terminating '\0', and atoi()-ing. Furthermore read() might not read enough, though unlikely here. Signed-off-by: Hannes Eder <heder@google.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/conntrack.c')
-rw-r--r--src/conntrack.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/conntrack.c b/src/conntrack.c
index 8e546ab..eec3868 100644
--- a/src/conntrack.c
+++ b/src/conntrack.c
@@ -1445,19 +1445,18 @@ int main(int argc, char *argv[])
break;
case CT_COUNT: {
#define NF_CONNTRACK_COUNT_PROC "/proc/sys/net/netfilter/nf_conntrack_count"
- int fd, count;
- char buf[strlen("2147483647")]; /* INT_MAX */
- fd = open(NF_CONNTRACK_COUNT_PROC, O_RDONLY);
- if (fd == -1) {
+ FILE *fd;
+ int count;
+ fd = fopen(NF_CONNTRACK_COUNT_PROC, "r");
+ if (fd == NULL) {
exit_error(OTHER_PROBLEM, "Can't open %s",
NF_CONNTRACK_COUNT_PROC);
}
- if (read(fd, buf, sizeof(buf)) == -1) {
+ if (fscanf(fd, "%d", &count) != 1) {
exit_error(OTHER_PROBLEM, "Can't read %s",
NF_CONNTRACK_COUNT_PROC);
}
- close(fd);
- count = atoi(buf);
+ fclose(fd);
printf("%d\n", count);
break;
}