From 9c4aef574bdd5ccd0a29a2cc3bd26081638010f6 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 5 Jun 2017 19:13:32 +0200 Subject: [PATCH] various fixes to free parameters and coverity issues --- examples/sample-afl.c | 54 +++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/examples/sample-afl.c b/examples/sample-afl.c index 717f9fac58..8d3c5b9b6f 100644 --- a/examples/sample-afl.c +++ b/examples/sample-afl.c @@ -20,12 +20,20 @@ static int recursive_directory(Camera *camera, const char *folder, GPContext *context, int *foundfile) { int i, ret; CameraList *list; + const char *newfile; + CameraFileInfo fileinfo; + CameraFile *file; - gp_list_new (&list); + ret = gp_list_new (&list); + if (ret < GP_OK) { + printf ("Could not allocate list.\n"); + return ret; + } ret = gp_camera_folder_list_folders (camera, folder, list, context); if (ret < GP_OK) { printf ("Could not list folders.\n"); + gp_list_free (list); return ret; } gp_list_sort (list); @@ -46,6 +54,7 @@ recursive_directory(Camera *camera, const char *folder, GPContext *context, int ret = recursive_directory (camera, buf, context, &havefile); free (buf); if (ret != GP_OK) { + gp_list_free (list); printf ("Failed to recursively list folders.\n"); return ret; } @@ -56,35 +65,34 @@ recursive_directory(Camera *camera, const char *folder, GPContext *context, int ret = gp_camera_folder_list_files (camera, folder, list, context); if (ret < GP_OK) { + gp_list_free (list); printf ("Could not list files.\n"); return ret; } gp_list_sort (list); - for (i = 0; i < gp_list_count (list); i++) { - const char *newfile; - CameraFileInfo fileinfo; - CameraFile *file; - - gp_list_get_name (list, i, &newfile); - ret = gp_camera_file_get_info (camera, folder, newfile, &fileinfo, context); - if (ret != GP_OK) { - printf ("Could not get file info.\n"); - return ret; - } - - /* Trigger the ptp things */ - gp_file_new (&file); - ret = gp_camera_file_get (camera, folder, newfile, GP_FILE_TYPE_METADATA, file, context); - if ((ret != GP_OK) && (ret != GP_ERROR_NOT_SUPPORTED)) { - printf ("Could not get file metadata.\n"); - return ret; - } - gp_file_free (file); + if (gp_list_count (list) <= 0) { + gp_list_free (list); + return GP_OK; + } - if (foundfile) *foundfile = 1; + gp_list_get_name (list, 0, &newfile); /* only entry 0 needed */ + ret = gp_camera_file_get_info (camera, folder, newfile, &fileinfo, context); + if (ret != GP_OK) { + gp_list_free (list); + printf ("Could not get file info.\n"); + return ret; + } - break; /* Just process the first file, then return */ + /* Trigger the ptp things */ + gp_file_new (&file); + ret = gp_camera_file_get (camera, folder, newfile, GP_FILE_TYPE_METADATA, file, context); + if ((ret != GP_OK) && (ret != GP_ERROR_NOT_SUPPORTED)) { + gp_list_free (list); + printf ("Could not get file metadata.\n"); + return ret; } + gp_file_free (file); + if (foundfile) *foundfile = 1; gp_list_free (list); return GP_OK; }