diff options
author | Sagar Ghuge <[email protected]> | 2018-09-05 10:19:47 -0700 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2018-10-04 10:01:56 +0100 |
commit | 0c70e11206b28164c7cde736ce15cd183d51a7fa (patch) | |
tree | 18c868381a40a77bcb1299b80b3d140f2df2bfc2 | |
parent | 29a2eaf3db1520a5bc7b80d39c0feac1d2165388 (diff) |
intel: aubinator: Fix memory leaks
Signed-off-by: Sagar Ghuge <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
-rw-r--r-- | src/intel/tools/aubinator.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c index 55672fa073c..ef0f7650b15 100644 --- a/src/intel/tools/aubinator.c +++ b/src/intel/tools/aubinator.c @@ -95,6 +95,18 @@ aubinator_init(void *user_data, int aub_pci_id, const char *app_name) gen_batch_decode_ctx_init(&batch_ctx, &devinfo, outfile, batch_flags, xml_path, NULL, NULL, NULL); + + /* Check for valid spec instance, if wrong xml_path is passed then spec + * instance is not initialized properly + */ + if (!batch_ctx.spec) { + fprintf(stderr, "Failed to initialize gen_batch_decode_ctx " + "spec instance\n"); + free(xml_path); + gen_batch_decode_ctx_finish(&batch_ctx); + exit(EXIT_FAILURE); + } + batch_ctx.max_vbo_decoded_lines = max_vbo_lines; char *color = GREEN_HEADER, *reset_color = NORMAL; @@ -178,14 +190,19 @@ aub_file_open(const char *filename) int fd; file = calloc(1, sizeof *file); + if (file == NULL) + return NULL; + fd = open(filename, O_RDONLY); if (fd == -1) { fprintf(stderr, "open %s failed: %s\n", filename, strerror(errno)); + free(file); exit(EXIT_FAILURE); } if (fstat(fd, &sb) == -1) { fprintf(stderr, "stat failed: %s\n", strerror(errno)); + free(file); exit(EXIT_FAILURE); } @@ -193,6 +210,7 @@ aub_file_open(const char *filename) PROT_READ, MAP_SHARED, fd, 0); if (file->map == MAP_FAILED) { fprintf(stderr, "mmap failed: %s\n", strerror(errno)); + free(file); exit(EXIT_FAILURE); } @@ -333,6 +351,11 @@ int main(int argc, char *argv[]) } file = aub_file_open(input_file); + if (!file) { + fprintf(stderr, "Unable to allocate buffer to open aub file\n"); + free(xml_path); + exit(EXIT_FAILURE); + } struct aub_read aub_read = { .user_data = &mem, @@ -359,9 +382,11 @@ int main(int argc, char *argv[]) fflush(stdout); /* close the stdout which is opened to write the output */ close(1); + free(file); free(xml_path); wait(NULL); + gen_batch_decode_ctx_finish(&batch_ctx); return EXIT_SUCCESS; } |