Fix the data type size difference 83/283583/1 accepted/tizen/7.0/unified/20221103.165426 accepted/tizen/7.0/unified/20221110.060835
authorjiyong.min <jiyong.min@samsung.com>
Tue, 18 Oct 2022 00:35:06 +0000 (09:35 +0900)
committerJiyong Min <jiyong.min@samsung.com>
Mon, 31 Oct 2022 04:25:29 +0000 (04:25 +0000)
Change-Id: Iba1f3ff1238eeb2c0272e9b81f908b42ba2d2fda
(cherry picked from commit df6fe009b2a42838b30f25999648b362a11f7a79)

include/metadata_extractor_private.h
packaging/capi-media-metadata-extractor.spec
src/metadata_extractor.c
test/metadata_extractor_test.c

index 7ad711aa8c95d860c0c2776184a060952f22a493..1a74ccf3e5d2762b09a8969565ba32788ffc852f 100644 (file)
@@ -75,7 +75,7 @@ extern "C" {
 
 typedef struct {
        char *path;
-       void *buffer;
+       const void *buffer;
        int buffer_size;
        bool extract_meta;
 
index 2e03d1f42ab4c46a7b5cf0db056eeac2addae5b8..0a25c4a1fb293dadd2d21290e353aa1e2acb8c24 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-metadata-extractor
 Summary:    A media metadata extractor library in Tizen Native API
-Version: 0.1.19
+Version: 0.1.20
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index 3c8eb33e0bab3236f30ae8b18b9e50d5a9048a94..47c2536bc1cd2c81af5053a8338568d01e6f00e4 100644 (file)
@@ -17,6 +17,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <inttypes.h>
 #include <mm_file.h>
 #include <metadata_extractor.h>
 #include <metadata_extractor_private.h>
@@ -896,15 +897,15 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned
        int _frame_size = 0;
        int width = 0;
        int height = 0;
-       long long micro_timestamp = 0;
+       int64_t micro_timestamp = 0;
 
        metadata_extractor_retvm_if(!_metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is NULL");
        metadata_extractor_retvm_if(!_metadata->path && !_metadata->buffer, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
        metadata_extractor_retvm_if(!size, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
-       micro_timestamp = (long long)timestamp * 1000;
+       micro_timestamp = (int64_t)timestamp * 1000;
 
-       metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%lld]", is_accurate, timestamp, micro_timestamp);
+       metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%"PRId64"]", is_accurate, timestamp, micro_timestamp);
 
        if (_metadata->path)
                ret = mm_file_get_video_frame(_metadata->path, micro_timestamp, is_accurate, (unsigned char **)&_frame, &_frame_size, &width, &height);
index ad11b7ab2efc167ec65d1f4dd191f4552b55d934..09e3051e6e4409a974bfe3f49c20f731bf1d7e0a 100755 (executable)
 #include <string.h>
 #include <unistd.h>
 #include <stdbool.h>
+#include <limits.h>
 #include <metadata_extractor.h>
 #include <metadata_extractor_private.h>
 
 #define SAFE_FREE(src) { if (src) {free(src); src = NULL; } }
 
 #define READ_FROM_FILE(FILE_PATH, data, size) \
-       do {    \
-               FILE *fp = fopen(FILE_PATH, "r");       \
-               if (fp) {       \
-                       fseek(fp, 0, SEEK_END); \
-                       size = ftell(fp);       \
-                       fseek(fp, 0, SEEK_SET); \
-                       if (size > 0) data = malloc(size);      \
-                       if (data != NULL) { if (fread(data, sizeof(char), size, fp) != size) { printf("fread error\n"); } }     \
-                       fclose(fp);     \
-                       printf("file size = %d\n", size);       \
-               }       \
+       do { \
+               FILE *fp = fopen(FILE_PATH, "r"); \
+               if (fp) { \
+                       fseek(fp, 0, SEEK_END); \
+                       size = ftell(fp); \
+                       fseek(fp, 0, SEEK_SET); \
+                       if (size > 0) { \
+                               data = malloc(size); \
+                               if (data != NULL) \
+                                       if (fread(data, sizeof(char), size, fp) != (size_t)size) \
+                                               printf("fread error\n"); \
+                       } \
+                       fclose(fp); \
+                       printf("file size = %ld\n", size); \
+               } \
        } while (0)
 
 /* Saves dump artwork and thumbnail to current path */
@@ -447,6 +452,8 @@ int main(int argc, char *argv[])
        int cnt = argc - 1;
        bool file_test = true;
        /* bool file_test = false; */
+       long file_size = 0;
+       unsigned char *buffer = NULL;
 
        printf("--- metadata extractor test start ---\n\n");
 
@@ -476,12 +483,15 @@ int main(int argc, char *argv[])
                        }
                } else {
                        printf("Extract meta from memory-----------------------\n");
-                       unsigned int file_size = 0;
-                       unsigned char *buffer = NULL;
                        /* Read file */
                        READ_FROM_FILE(argv[idx + 1], buffer, file_size);
 
-                       ret = metadata_extractor_set_buffer(metadata, buffer, file_size);
+                       if (file_size >= INT_MAX) {
+                               printf("File_size[%ld] is too big\n", file_size);
+                               goto exception;
+                       }
+
+                       ret = metadata_extractor_set_buffer(metadata, buffer, (int)file_size);
                        if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
                                printf("Fail metadata_extractor_set_buffer [%d]\n", ret);
                                goto exception;
@@ -489,6 +499,7 @@ int main(int argc, char *argv[])
                }
 
                __capi_metadata_extractor(metadata);
+               SAFE_FREE(buffer);
                printf("--------------------------------------------\n");
 
        }
@@ -496,7 +507,7 @@ int main(int argc, char *argv[])
 exception:
        ret = metadata_extractor_destroy(metadata);
        printf("metadata_extractor_destroy [%d]\n", ret);
-
+       SAFE_FREE(buffer);
        printf("--- metadata extractor test end ---\n\n");
 
        return 0;