Fix coverity issue 67/261667/2 accepted/tizen/unified/20210723.122801 submit/tizen/20210722.085241
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 22 Jul 2021 08:27:14 +0000 (17:27 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 22 Jul 2021 08:35:24 +0000 (17:35 +0900)
Change-Id: I6c9e854e3f857829b804aecc4f416bec778bfc79
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/common/media-svc-util.c

index b4c4522..bf20193 100644 (file)
@@ -1242,14 +1242,28 @@ static char * __media_svc_find_and_get_value(xmlNodePtr node, const char *key)
 static gboolean __media_svc_get_epub_root_file(zip_t *z, char **opf_file)
 {
        gchar *buf = NULL;
+       gchar *tmp_buf = NULL;
+       int len = 0;
        xmlDocPtr doc = NULL;
        xmlNodePtr node = NULL;
 
        media_svc_retvm_if(!z, FALSE, "z is NULL");
        media_svc_retvm_if(!opf_file, FALSE, "opf_file is NULL");
 
-       buf = __media_svc_get_zipfile_data(z, "META-INF/container.xml");
-       media_svc_retvm_if(!buf, FALSE, "buf is NULL");
+       tmp_buf = __media_svc_get_zipfile_data(z, "META-INF/container.xml");
+       media_svc_retvm_if(!tmp_buf, FALSE, "tmp_buf is NULL");
+
+       len = strlen(tmp_buf);
+
+       while (0 < len) {
+               len--;
+
+               if (tmp_buf[len] == '>')
+                       break;
+       }
+
+       buf = g_strndup(tmp_buf, len + 1);
+       g_free(tmp_buf);
 
        doc = xmlParseDoc((const xmlChar *)buf);
        g_free(buf);
@@ -1357,7 +1371,10 @@ static int __media_svc_get_pdf_metadata(media_svc_content_info_s *content_info)
        search_limit = content_info->size - MEDIA_SVC_PDF_TAG_TAIL_LEN;
 
        while (cur_pos <= search_limit) {
-               lseek(fd, cur_pos, SEEK_SET);
+               if (lseek(fd, cur_pos, SEEK_SET) == -1)
+                       break;
+
+               memset(&tmp, 0x00, MEDIA_SVC_PDF_BUF_SIZE + 1);
 
                if (read(fd, &tmp, MEDIA_SVC_PDF_BUF_SIZE) != MEDIA_SVC_PDF_BUF_SIZE) {
                        media_svc_error("read failed");
@@ -1380,11 +1397,15 @@ static int __media_svc_get_pdf_metadata(media_svc_content_info_s *content_info)
 
                //2.get metadata using xml parser
                if (start_pos && end_pos) {
+                       if (lseek(fd, start_pos, SEEK_SET) == -1)
+                               break;
+
                        meta_buf = g_malloc0(end_pos - start_pos + 1);
 
-                       lseek(fd, start_pos, SEEK_SET);
-                       if (read(fd, meta_buf, end_pos - start_pos) != end_pos - start_pos)
+                       if (read(fd, meta_buf, end_pos - start_pos) != end_pos - start_pos) {
+                               g_free(meta_buf);
                                goto NEXT;
+                       }
 
                        if (__media_svc_get_xml_metadata((const xmlChar *)meta_buf, TRUE, content_info)) {
                                g_free(meta_buf);