diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2009-12-29 13:51:36 -0500 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-29 14:10:00 -0500 |
| commit | c359b2f7fc57ad9bf1adc006ea42ac2bfa652d0f (patch) | |
| tree | 3003936e730875fdcbb5ec6e43475c951356aaac | |
| parent | 397292ce2da1208e15a1902eda41213f92228420 (diff) | |
trace-cmd: Fixed small memory leak in plugin code
Thanks again to valgrind in finding some memory leaks in the plugin
code.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-util.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/trace-util.c b/trace-util.c index d5be6ed..520f800 100644 --- a/trace-util.c +++ b/trace-util.c | |||
| @@ -154,7 +154,7 @@ static int load_plugin(struct pevent *pevent, | |||
| 154 | char *plugin; | 154 | char *plugin; |
| 155 | void *handle; | 155 | void *handle; |
| 156 | pevent_plugin_load_func func; | 156 | pevent_plugin_load_func func; |
| 157 | int ret; | 157 | int ret = -1; |
| 158 | 158 | ||
| 159 | plugin = malloc_or_die(strlen(path) + strlen(file) + 2); | 159 | plugin = malloc_or_die(strlen(path) + strlen(file) + 2); |
| 160 | 160 | ||
| @@ -166,19 +166,22 @@ static int load_plugin(struct pevent *pevent, | |||
| 166 | if (!handle) { | 166 | if (!handle) { |
| 167 | warning("cound not load plugin '%s'\n%s\n", | 167 | warning("cound not load plugin '%s'\n%s\n", |
| 168 | plugin, dlerror()); | 168 | plugin, dlerror()); |
| 169 | return -1; | 169 | goto out; |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | func = dlsym(handle, PEVENT_PLUGIN_LOADER_NAME); | 172 | func = dlsym(handle, PEVENT_PLUGIN_LOADER_NAME); |
| 173 | if (!func) { | 173 | if (!func) { |
| 174 | warning("cound not find func '%s' in plugin '%s'\n%s\n", | 174 | warning("cound not find func '%s' in plugin '%s'\n%s\n", |
| 175 | PEVENT_PLUGIN_LOADER_NAME, plugin, dlerror()); | 175 | PEVENT_PLUGIN_LOADER_NAME, plugin, dlerror()); |
| 176 | return -1; | 176 | goto out; |
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | printf("registering plugin: %s\n", plugin); | 179 | printf("registering plugin: %s\n", plugin); |
| 180 | ret = func(pevent); | 180 | ret = func(pevent); |
| 181 | 181 | ||
| 182 | out: | ||
| 183 | free(plugin); | ||
| 184 | |||
| 182 | /* dlclose ?? */ | 185 | /* dlclose ?? */ |
| 183 | return ret; | 186 | return ret; |
| 184 | } | 187 | } |
| @@ -262,5 +265,7 @@ int trace_load_plugins(struct pevent *pevent) | |||
| 262 | 265 | ||
| 263 | fail: | 266 | fail: |
| 264 | free(path); | 267 | free(path); |
| 268 | closedir(dir); | ||
| 269 | |||
| 265 | return -1; | 270 | return -1; |
| 266 | } | 271 | } |
