Fix buffer overflows in eve.c (sf.net #3034056)
[monky] / src / top.c
index af195bb..18b4ee6 100644 (file)
--- a/src/top.c
+++ b/src/top.c
@@ -880,16 +880,22 @@ int parse_top_args(const char *s, const char *arg, struct text_object *obj)
 #else /* IOSTATS */
                        NORM_ERR("must be one of: name, cpu, pid, mem, time, mem_res, mem_vsize");
 #endif /* IOSTATS */
+                       free(td->s);
+                       free(obj->data.opaque);
                        return 0;
                }
                if (n < 1 || n > 10) {
                        NORM_ERR("invalid num arg for top. Must be between 1 and 10.");
+                       free(td->s);
+                       free(obj->data.opaque);
                        return 0;
                } else {
                        td->num = n - 1;
                }
        } else {
                NORM_ERR("invalid argument count for top");
+               free(td->s);
+               free(obj->data.opaque);
                return 0;
        }
        return 1;