Free the filename on sys_close
authorJulien Desfossez <jdesfossez@efficios.com>
Wed, 12 Feb 2014 05:28:15 +0000 (00:28 -0500)
committerJulien Desfossez <jdesfossez@efficios.com>
Wed, 12 Feb 2014 05:28:15 +0000 (00:28 -0500)
We don't support yet all the syscalls that can return a FD, so we should
at least make sure that we don't reuse closed filenames.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
src/iostreamtop.c

index f20fcecd81ec752a88b6ddf25559ab82d752aa81..f3fef7b25ea97043dfc8f89949fb3bbf05556811 100644 (file)
@@ -48,7 +48,8 @@ void add_file(struct processtop *proc, struct files *file, int fd)
                if (tmp_file == NULL)
                        g_ptr_array_index(proc->process_files_table, fd) = file;
                else {
-                       if (strcmp(tmp_file->name, file->name) != 0) {
+                       if (!tmp_file->name ||
+                                       strcmp(tmp_file->name, file->name) != 0) {
                                size = proc->process_files_table->len;
                                g_ptr_array_set_size(proc->process_files_table,
                                                                size+1);
@@ -139,6 +140,10 @@ void close_file(struct processtop *proc, int fd)
        if (file != NULL) {
                file->flag = __NR_close;
                lttngtop.nbfiles--;
+               if (file->name) {
+                       free(file->name);
+                       file->name = NULL;
+               }
        }
        lttngtop.nbclosedfiles++;
 }
This page took 0.023691 seconds and 4 git commands to generate.