Fix issues found by coverity scan
authorTomas Mlcoch <tmlcoch@redhat.com>
Wed, 14 May 2014 14:55:29 +0000 (16:55 +0200)
committerTomas Mlcoch <tmlcoch@redhat.com>
Thu, 15 May 2014 12:31:44 +0000 (14:31 +0200)
src/compression_wrapper.c
src/load_metadata.c
src/locate_metadata.c
src/mergerepo_c.c
src/modifyrepo_shared.c
src/parsepkg.c
src/repomd.c
src/sqlite.c
src/xml_file.c
utils/cleanup.sh

index a773c9e..3cc1c7e 100644 (file)
@@ -895,7 +895,6 @@ cr_read(CR_FILE *cr_file, void *buffer, unsigned int len, GError **err)
            || (ret != CR_CW_ERR && *err == NULL));
 
     if (cr_file->stat && ret != CR_CW_ERR) {
-        GError *tmp_err = NULL;
         cr_file->stat->size += ret;
         if (cr_file->checksum_ctx) {
             GError *tmp_err = NULL;
index cd2d24a..5a50308 100644 (file)
@@ -542,7 +542,7 @@ cr_metadata_locate_and_load_xml(cr_Metadata *md,
     assert(repopath);
 
     ml = cr_locate_metadata(repopath, 1, &tmp_err);
-    if (tmp_err) {
+    if (!ml) {
         int code = tmp_err->code;
         g_propagate_error(err, tmp_err);
         return code;
index efc47c4..70b8910 100644 (file)
@@ -354,6 +354,7 @@ cr_locate_metadata(const char *in_repopath, int ignore_sqlite, GError **err)
     if (!ret) {
         g_set_error(err, CR_LOCATE_METADATA_ERROR, CRE_NODIR,
                     "Cannot locate metadata");
+        return NULL;
     }
 
     return ret;
index 59a990f..eec81ad 100644 (file)
@@ -1168,7 +1168,7 @@ dump_merged_metadata(GHashTable *merged_hashtable,
                                        CR_CW_MODE_WRITE,
                                        cmd_options->groupfile_compression_type,
                                        &tmp_err);
-        if (!tmp_err) {
+        if (update_info) {
             cr_puts(update_info,
                     "<?xml version=\"1.0\"?>\n<updates></updates>\n",
                     NULL);
index ea883cd..e1c9492 100644 (file)
@@ -422,7 +422,7 @@ cr_modifyrepo_parse_batchfile(const gchar *path,
                 task->unique_md_filenames, task->checksum_type,
                 cr_checksum_name_str(task->checksum_type), task->new_name);
 
- }
   }
 
     g_strfreev(groups);
 
index f31efc9..cd93b38 100644 (file)
@@ -173,7 +173,7 @@ cr_package_from_rpm(const char *filename,
     // Compute checksum
 
     char *checksum = cr_checksum_file(filename, checksum_type, &tmp_err);
-    if (tmp_err) {
+    if (!checksum) {
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while checksum calculation: ");
         headerFree(hdr);
@@ -188,6 +188,7 @@ cr_package_from_rpm(const char *filename,
     if (tmp_err) {
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while determinig header range: ");
+        free(checksum);
         return NULL;
     }
 
@@ -268,7 +269,7 @@ cr_xml_from_rpm(const char *filename,
     // Compute checksum
 
     char *checksum = cr_checksum_file(filename, checksum_type, &tmp_err);
-    if (tmp_err) {
+    if (!checksum) {
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while checksum calculation: ");
         headerFree(hdr);
@@ -283,6 +284,7 @@ cr_xml_from_rpm(const char *filename,
     if (tmp_err) {
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while determinig header range: ");
+        free(checksum);
         return result;
     }
 
index 96e0fc9..755e89d 100644 (file)
@@ -223,7 +223,7 @@ cr_repomd_record_fill(cr_RepomdRecord *md,
         gchar *chksum;
 
         chksum = cr_checksum_file(path, checksum_t, &tmp_err);
-        if (tmp_err) {
+        if (!chksum) {
             int code = tmp_err->code;
             g_propagate_prefixed_error(err, tmp_err,
                 "Error while checksum calculation of %s:", path);
@@ -316,10 +316,12 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
                                    cr_CompressionType record_compression,
                                    GError **err)
 {
+    int ret = CRE_OK;
     const char *suffix;
     gchar *path, *cpath;
     gchar *clocation_real, *clocation_href;
-    gchar *checksum, *cchecksum;
+    gchar *checksum = NULL;
+    gchar *cchecksum = NULL;
     int readed;
     char buf[BUFFER_SIZE];
     CR_FILE *cw_plain;
@@ -373,9 +375,9 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
                        CR_CW_NO_COMPRESSION,
                        &tmp_err);
     if (!cw_plain) {
-        int code = tmp_err->code;
+        ret = tmp_err->code;
         g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", path);
-        return code;
+        return ret;
     }
 
     cw_compressed = cr_open(cpath,
@@ -383,9 +385,9 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
                             record_compression,
                             &tmp_err);
     if (!cw_compressed) {
-        int code = tmp_err->code;
+        ret = tmp_err->code;
         g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", cpath);
-        return code;
+        return ret;
     }
 
     while ((readed = cr_read(cw_plain, buf, BUFFER_SIZE, &tmp_err)) > 0) {
@@ -397,40 +399,39 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
     cr_close(cw_plain, NULL);
 
     if (tmp_err) {
-        int code = tmp_err->code;
+        ret = tmp_err->code;
         cr_close(cw_compressed, NULL);
         g_debug("%s: Error while repomd record compression: %s", __func__,
                 tmp_err->message);
         g_propagate_prefixed_error(err, tmp_err,
                 "Error while compression %s -> %s:", path, cpath);
-        return code;
+        return ret;
     }
 
     cr_close(cw_compressed, &tmp_err);
     if (tmp_err) {
-        int code = tmp_err->code;
+        ret = tmp_err->code;
         g_propagate_prefixed_error(err, tmp_err,
                 "Error while closing %s: ", path);
-        return code;
+        return ret;
     }
 
-
     // Compute checksums
 
     checksum  = cr_checksum_file(path, checksum_type, &tmp_err);
-    if (tmp_err) {
-        int code = tmp_err->code;
+    if (!checksum) {
+        ret = tmp_err->code;
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while checksum calculation:");
-        return code;
+        goto end;
     }
 
     cchecksum = cr_checksum_file(cpath, checksum_type, &tmp_err);
-    if (tmp_err) {
-        int code = tmp_err->code;
+    if (!cchecksum) {
+        ret = tmp_err->code;
         g_propagate_prefixed_error(err, tmp_err,
                                    "Error while checksum calculation:");
-        return code;
+        goto end;
     }
 
 
@@ -440,22 +441,24 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
         g_debug("%s: Error while stat() on %s", __func__, path);
         g_set_error(err, CR_REPOMD_RECORD_ERROR, CRE_IO,
                     "Cannot stat %s", path);
-        return CRE_IO;
-    } else {
-        gf_size = gf_stat.st_size;
-        gf_time = gf_stat.st_mtime;
+        ret = CRE_IO;
+        goto end;
     }
 
+    gf_size = gf_stat.st_size;
+    gf_time = gf_stat.st_mtime;
+
     if (stat(cpath, &cgf_stat)) {
         g_debug("%s: Error while stat() on %s", __func__, cpath);
         g_set_error(err, CR_REPOMD_RECORD_ERROR, CRE_IO,
                     "Cannot stat %s", cpath);
-        return CRE_IO;
-    } else {
-        cgf_size = cgf_stat.st_size;
-        cgf_time = cgf_stat.st_mtime;
+        ret = CRE_IO;
+        goto end;
     }
 
+    cgf_size = cgf_stat.st_size;
+    cgf_time = cgf_stat.st_mtime;
+
 
     // Results
 
@@ -475,10 +478,11 @@ cr_repomd_record_compress_and_fill(cr_RepomdRecord *record,
     crecord->size = cgf_size;
     crecord->size_open = gf_size;
 
+end:
     g_free(checksum);
     g_free(cchecksum);
 
-    return CRE_OK;
+    return ret;
 }
 
 int
index d866930..3bd9425 100644 (file)
@@ -1074,14 +1074,44 @@ db_package_ids_write(sqlite3 *db,
 
 // Primary.sqlite interface
 
+void
+cr_db_destroy_primary_statements(cr_DbPrimaryStatements stmts)
+{
+    if (!stmts)
+        return;
+
+    if (stmts->pkg_handle)
+        sqlite3_finalize(stmts->pkg_handle);
+    if (stmts->provides_handle)
+        sqlite3_finalize(stmts->provides_handle);
+    if (stmts->conflicts_handle)
+        sqlite3_finalize(stmts->conflicts_handle);
+    if (stmts->obsoletes_handle)
+        sqlite3_finalize(stmts->obsoletes_handle);
+    if (stmts->requires_handle)
+        sqlite3_finalize(stmts->requires_handle);
+    if (stmts->suggests_handle)
+        sqlite3_finalize(stmts->suggests_handle);
+    if (stmts->enhances_handle)
+        sqlite3_finalize(stmts->enhances_handle);
+    if (stmts->recommends_handle)
+        sqlite3_finalize(stmts->recommends_handle);
+    if (stmts->supplements_handle)
+        sqlite3_finalize(stmts->supplements_handle);
+    if (stmts->files_handle)
+        sqlite3_finalize(stmts->files_handle);
+    free(stmts);
+}
+
+
 cr_DbPrimaryStatements
 cr_db_prepare_primary_statements(sqlite3 *db, GError **err)
 {
+    assert(!err || *err == NULL);
+
     GError *tmp_err = NULL;
     cr_DbPrimaryStatements ret = malloc(sizeof(*ret));
 
-    assert(!err || *err == NULL);
-
     ret->db                 = db;
     ret->pkg_handle         = NULL;
     ret->provides_handle    = NULL;
@@ -1097,94 +1127,68 @@ cr_db_prepare_primary_statements(sqlite3 *db, GError **err)
     ret->pkg_handle = db_package_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->provides_handle = db_dependency_prepare(db, "provides", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->conflicts_handle = db_dependency_prepare(db, "conflicts", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->obsoletes_handle = db_dependency_prepare(db, "obsoletes", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->requires_handle = db_dependency_prepare(db, "requires", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->suggests_handle = db_dependency_prepare(db, "suggests", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->enhances_handle = db_dependency_prepare(db, "enhances", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->recommends_handle = db_dependency_prepare(db, "recommends", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->supplements_handle = db_dependency_prepare(db, "supplements", &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->files_handle = db_file_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     return ret;
-}
-
 
-void
-cr_db_destroy_primary_statements(cr_DbPrimaryStatements stmts)
-{
-    if (!stmts)
-        return;
-
-    if (stmts->pkg_handle)
-        sqlite3_finalize(stmts->pkg_handle);
-    if (stmts->provides_handle)
-        sqlite3_finalize(stmts->provides_handle);
-    if (stmts->conflicts_handle)
-        sqlite3_finalize(stmts->conflicts_handle);
-    if (stmts->obsoletes_handle)
-        sqlite3_finalize(stmts->obsoletes_handle);
-    if (stmts->requires_handle)
-        sqlite3_finalize(stmts->requires_handle);
-    if (stmts->suggests_handle)
-        sqlite3_finalize(stmts->suggests_handle);
-    if (stmts->enhances_handle)
-        sqlite3_finalize(stmts->enhances_handle);
-    if (stmts->recommends_handle)
-        sqlite3_finalize(stmts->recommends_handle);
-    if (stmts->supplements_handle)
-        sqlite3_finalize(stmts->supplements_handle);
-    if (stmts->files_handle)
-        sqlite3_finalize(stmts->files_handle);
-    free(stmts);
+error:
+    cr_db_destroy_primary_statements(ret);
+    return NULL;
 }
 
 
@@ -1322,6 +1326,20 @@ cr_db_add_primary_pkg(cr_DbPrimaryStatements stmts,
 // filelists.sqlite interface
 
 
+void
+cr_db_destroy_filelists_statements(cr_DbFilelistsStatements stmts)
+{
+    if (!stmts)
+        return;
+
+    if (stmts->package_id_handle)
+        sqlite3_finalize(stmts->package_id_handle);
+    if (stmts->filelists_handle)
+        sqlite3_finalize(stmts->filelists_handle);
+    free(stmts);
+}
+
+
 cr_DbFilelistsStatements
 cr_db_prepare_filelists_statements(sqlite3 *db, GError **err)
 {
@@ -1337,30 +1355,20 @@ cr_db_prepare_filelists_statements(sqlite3 *db, GError **err)
     ret->package_id_handle = db_package_ids_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->filelists_handle = db_filelists_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     return ret;
-}
 
-
-void
-cr_db_destroy_filelists_statements(cr_DbFilelistsStatements stmts)
-{
-    if (!stmts)
-        return;
-
-    if (stmts->package_id_handle)
-        sqlite3_finalize(stmts->package_id_handle);
-    if (stmts->filelists_handle)
-        sqlite3_finalize(stmts->filelists_handle);
-    free(stmts);
+error:
+    cr_db_destroy_filelists_statements(ret);
+    return NULL;
 }
 
 
@@ -1405,6 +1413,20 @@ cr_db_add_filelists_pkg(cr_DbFilelistsStatements stmts,
 // other.sqlite interface
 
 
+void
+cr_db_destroy_other_statements(cr_DbOtherStatements stmts)
+{
+    if (!stmts)
+        return;
+
+    if (stmts->package_id_handle)
+        sqlite3_finalize(stmts->package_id_handle);
+    if (stmts->changelog_handle)
+        sqlite3_finalize(stmts->changelog_handle);
+    free(stmts);
+}
+
+
 cr_DbOtherStatements
 cr_db_prepare_other_statements(sqlite3 *db, GError **err)
 {
@@ -1420,30 +1442,20 @@ cr_db_prepare_other_statements(sqlite3 *db, GError **err)
     ret->package_id_handle = db_package_ids_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     ret->changelog_handle = db_changelog_prepare(db, &tmp_err);
     if (tmp_err) {
         g_propagate_error(err, tmp_err);
-        return ret;
+        goto error;
     }
 
     return ret;
-}
-
-
-void
-cr_db_destroy_other_statements(cr_DbOtherStatements stmts)
-{
-    if (!stmts)
-        return;
 
-    if (stmts->package_id_handle)
-        sqlite3_finalize(stmts->package_id_handle);
-    if (stmts->changelog_handle)
-        sqlite3_finalize(stmts->changelog_handle);
-    free(stmts);
+error:
+    cr_db_destroy_other_statements(ret);
+    return NULL;
 }
 
 
@@ -1581,7 +1593,7 @@ cr_db_open(const char *path, cr_DatabaseType db_type, GError **err)
             return NULL;
     }
 
-    if (tmp_err) {
+    if (!statements) {
             g_propagate_error(err, tmp_err);
             sqlite3_close(db);
             return NULL;
index 36934ea..4230a5b 100644 (file)
@@ -66,7 +66,7 @@ cr_xmlfile_sopen(const char *filename,
                              comtype,
                              stat,
                              &tmp_err);
-    if (tmp_err) {
+    if (!cr_f) {
         g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", filename);
         return NULL;
     }
index 33c2151..b48ecb6 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/bash
 
-rm -v createrepo_c-*.tar.xz
-rm -v createrepo_c-*.rpm python-createrepo_c-*.rpm
-rm -v deltarepo-*.rpm python-deltarepo-*.rpm
+rm -fv createrepo_c-*.tar.xz
+rm -fv createrepo_c-*.rpm python-createrepo_c-*.rpm
+rm -fv deltarepo-*.rpm python-deltarepo-*.rpm