diff options
-rw-r--r-- | trace-cmd.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/trace-cmd.c b/trace-cmd.c index e1341bf..9965428 100644 --- a/trace-cmd.c +++ b/trace-cmd.c | |||
@@ -891,6 +891,11 @@ static void update_filter(const char *event_name, const char *field, | |||
891 | die("Can't read %s", path); | 891 | die("Can't read %s", path); |
892 | close(fd); | 892 | close(fd); |
893 | 893 | ||
894 | if (ret >= BUFSIZ) | ||
895 | ret = BUFSIZ - 1; | ||
896 | |||
897 | buf[ret] = 0; | ||
898 | |||
894 | /* append unless there is currently no filter */ | 899 | /* append unless there is currently no filter */ |
895 | if (strncmp(buf, "none", 4) == 0) { | 900 | if (strncmp(buf, "none", 4) == 0) { |
896 | filter = malloc_or_die(strlen(pid) + strlen(field) + | 901 | filter = malloc_or_die(strlen(pid) + strlen(field) + |
@@ -902,14 +907,7 @@ static void update_filter(const char *event_name, const char *field, | |||
902 | sprintf(filter, "(%s)||(%s==%s)", buf, field, pid); | 907 | sprintf(filter, "(%s)||(%s==%s)", buf, field, pid); |
903 | } | 908 | } |
904 | 909 | ||
905 | fd = open(path, O_WRONLY); | 910 | write_filter(path, filter); |
906 | if (fd < 0) | ||
907 | die("can't open %s", path); | ||
908 | |||
909 | ret = write(fd, filter, strlen(filter)); | ||
910 | if (ret < 0) | ||
911 | warning("Can't write to %s", path); | ||
912 | close(fd); | ||
913 | 911 | ||
914 | free(filter); | 912 | free(filter); |
915 | 913 | ||