[Midnightbsd-cvs] src [7675] trunk/lib/libmport: call finalize when we fail

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Aug 7 00:58:56 EDT 2016


Revision: 7675
          http://svnweb.midnightbsd.org/src/?rev=7675
Author:   laffer1
Date:     2016-08-07 00:58:55 -0400 (Sun, 07 Aug 2016)
Log Message:
-----------
call finalize when we fail

Modified Paths:
--------------
    trunk/lib/libmport/bundle_read.c
    trunk/lib/libmport/bundle_read_install_pkg.c
    trunk/lib/libmport/bundle_read_update_pkg.c
    trunk/lib/libmport/check_preconditions.c
    trunk/lib/libmport/index.c
    trunk/lib/libmport/index_depends.c
    trunk/lib/libmport/merge_primative.c
    trunk/lib/libmport/setting.c
    trunk/lib/libmport/stats.c
    trunk/lib/libmport/update_primative.c
    trunk/lib/libmport/verify.c

Modified: trunk/lib/libmport/bundle_read.c
===================================================================
--- trunk/lib/libmport/bundle_read.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/bundle_read.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -258,9 +258,10 @@
 
   bundle->stub_attached = 1;
     
-  if (mport_db_prepare(mport->db, &stmt, "SELECT value FROM stub.meta WHERE field='bundle_format_version'") != MPORT_OK)
-    RETURN_CURRENT_ERROR;
-
+  if (mport_db_prepare(mport->db, &stmt, "SELECT value FROM stub.meta WHERE field='bundle_format_version'") != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
   ret = sqlite3_step(stmt);
     
   switch (ret) {

Modified: trunk/lib/libmport/bundle_read_install_pkg.c
===================================================================
--- trunk/lib/libmport/bundle_read_install_pkg.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/bundle_read_install_pkg.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -104,8 +104,10 @@
         RETURN_CURRENT_ERROR;
 
     /* Process @preexec steps */
-    if (mport_db_prepare(db, &assets, "SELECT type, data FROM stub.assets WHERE pkg=%Q and type in (%d, %d)", pkg->name, ASSET_CWD, ASSET_PREEXEC) != MPORT_OK)
-        goto ERROR;
+    if (mport_db_prepare(db, &assets, "SELECT type, data FROM stub.assets WHERE pkg=%Q and type in (%d, %d)", pkg->name, ASSET_CWD, ASSET_PREEXEC) != MPORT_OK) {
+		sqlite3_finalize(assets);
+		goto ERROR;
+	}
 
     (void) strlcpy(cwd, pkg->prefix, sizeof(cwd));
 
@@ -160,8 +162,10 @@
 
 	if (mport_db_prepare(mport->db, &count,
 						 "SELECT COUNT(*) FROM stub.assets WHERE (type=%i or type=%i or type=%i or type=%i) AND pkg=%Q",
-						 ASSET_FILE, ASSET_SAMPLE, ASSET_SHELL, ASSET_FILE_OWNER_MODE, pkg_name) != MPORT_OK)
+						 ASSET_FILE, ASSET_SAMPLE, ASSET_SHELL, ASSET_FILE_OWNER_MODE, pkg_name) != MPORT_OK) {
+		sqlite3_finalize(count);
 		RETURN_CURRENT_ERROR;
+	}
 
 	switch (sqlite3_step(count)) {
 		case SQLITE_ROW:
@@ -253,8 +257,9 @@
 		RETURN_CURRENT_ERROR;
 	}
 
-	if (stmt == NULL)
-		RETURN_CURRENT_ERROR;
+	if (stmt == NULL) {
+		RETURN_ERROR(MPORT_ERR_FATAL, "Statement was null");
+	}
 
 	while (1) {
 		ret = sqlite3_step(stmt);
@@ -649,8 +654,8 @@
     return MPORT_OK;
 
     ERROR:
+		sqlite3_finalize(insert);
 		mport_pkgmeta_logevent(mport, pkg, "Failed to Install");
-        sqlite3_finalize(insert);
         (mport->progress_free_cb)();
         free(orig_cwd);
 		mport_assetlist_free(alist);
@@ -716,8 +721,10 @@
     db = mport->db;
 
     /* Process @postexec steps */
-    if (mport_db_prepare(db, &assets, "SELECT type, data FROM stub.assets WHERE pkg=%Q and type in (%d, %d)", pkg->name, ASSET_CWD, ASSET_POSTEXEC) != MPORT_OK)
-        goto ERROR;
+    if (mport_db_prepare(db, &assets, "SELECT type, data FROM stub.assets WHERE pkg=%Q and type in (%d, %d)", pkg->name, ASSET_CWD, ASSET_POSTEXEC) != MPORT_OK) {
+		sqlite3_finalize(assets);
+		goto ERROR;
+	}
 
     (void) strlcpy(cwd, pkg->prefix, sizeof(cwd));
 

Modified: trunk/lib/libmport/bundle_read_update_pkg.c
===================================================================
--- trunk/lib/libmport/bundle_read_update_pkg.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/bundle_read_update_pkg.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__MBSDID("$MidnightBSD: src/lib/libmport/bundle_read_update_pkg.c,v 1.8 2011/07/24 15:59:08 laffer1 Exp $");
+__MBSDID("$MidnightBSD$");
 
 #include "mport.h"
 #include "mport_private.h"
@@ -170,8 +170,10 @@
   sqlite3_stmt *stmt;
   char *entry;
  
-  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM depends WHERE pkg=%Q", pkg->name) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM depends WHERE pkg=%Q", pkg->name) != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
     
   ret = sqlite3_step(stmt);
    
@@ -193,8 +195,10 @@
   if ((extra->depends = (char **)calloc(count + 1, sizeof(char *))) == NULL)
     RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
  
-  if (mport_db_prepare(mport->db, &stmt, "SELECT depend_pkgname, depend_pkgversion, depend_port FROM depends WHERE pkg=%Q", pkg->name) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(mport->db, &stmt, "SELECT depend_pkgname, depend_pkgversion, depend_port FROM depends WHERE pkg=%Q", pkg->name) != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
   
   i = 0;
   while (1) {

Modified: trunk/lib/libmport/check_preconditions.c
===================================================================
--- trunk/lib/libmport/check_preconditions.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/check_preconditions.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -81,8 +81,10 @@
   char *system_os_release;
   
   /* check if the package is already installed */
-  if (mport_db_prepare(db, &stmt, "SELECT version, os_release FROM packages WHERE pkg=%Q", pack->name) != MPORT_OK) 
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(db, &stmt, "SELECT version, os_release FROM packages WHERE pkg=%Q", pack->name) != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
 
   switch (sqlite3_step(stmt)) {
     case SQLITE_DONE:
@@ -123,15 +125,19 @@
   int ret;
   const char *inst_name, *inst_version;
   
-  if (mport_db_prepare(db, &stmt, "SELECT packages.pkg, packages.version FROM stub.conflicts LEFT JOIN packages ON packages.pkg GLOB stub.conflicts.conflict_pkg AND packages.version GLOB stub.conflicts.conflict_version WHERE stub.conflicts.pkg=%Q AND packages.pkg IS NOT NULL", pack->name) != MPORT_OK) 
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(db, &stmt,
+					   "SELECT packages.pkg, packages.version FROM stub.conflicts LEFT JOIN packages ON packages.pkg GLOB stub.conflicts.conflict_pkg AND packages.version GLOB stub.conflicts.conflict_version WHERE stub.conflicts.pkg=%Q AND packages.pkg IS NOT NULL", pack->name) != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
+
   
   while (1) {
     ret = sqlite3_step(stmt);
     
     if (ret == SQLITE_ROW) {
-        inst_name    = sqlite3_column_text(stmt, 0);
-        inst_version = sqlite3_column_text(stmt, 1);
+        inst_name    = (const char *) sqlite3_column_text(stmt, 0);
+        inst_version = (const char *) sqlite3_column_text(stmt, 1);
         
         SET_ERRORX(MPORT_ERR_FATAL, "Installed package %s-%s conflicts with %s", inst_name, inst_version, pack->name);
         sqlite3_finalize(stmt);

Modified: trunk/lib/libmport/index.c
===================================================================
--- trunk/lib/libmport/index.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/index.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -196,8 +196,10 @@
   sqlite3_stmt *stmt;
   
   /* XXX the country is hard coded until a configuration system is created */    
-  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM idx.mirrors WHERE country='us'") != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM idx.mirrors WHERE country='us'") != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
 
   switch (sqlite3_step(stmt)) {
     case SQLITE_ROW:
@@ -220,8 +222,10 @@
   *list_p = list;  
   i = 0;
     
-  if (mport_db_prepare(mport->db, &stmt, "SELECT mirror FROM idx.mirrors WHERE country='us'") != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(mport->db, &stmt, "SELECT mirror FROM idx.mirrors WHERE country='us'") != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
     
   while (1) {
     ret = sqlite3_step(stmt);
@@ -271,8 +275,10 @@
   if (lookup_alias(mport, pkgname, &lookup) != MPORT_OK)
     RETURN_CURRENT_ERROR;
 
-  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM idx.packages WHERE pkg GLOB %Q", lookup) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(mport->db, &stmt, "SELECT COUNT(*) FROM idx.packages WHERE pkg GLOB %Q", lookup) != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
  
   switch (sqlite3_step(stmt)) {
     case SQLITE_ROW:

Modified: trunk/lib/libmport/index_depends.c
===================================================================
--- trunk/lib/libmport/index_depends.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/index_depends.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__MBSDID("$MidnightBSD: src/lib/libmport/index_depends.c,v 1.1 2013/03/17 18:06:18 laffer1 Exp $");
+__MBSDID("$MidnightBSD$");
 
 #include "mport.h"
 #include "mport_private.h"
@@ -57,8 +57,10 @@
 
 	if (mport_db_prepare(mport->db, &stmt,
 	    "SELECT COUNT(*) FROM idx.depends WHERE pkg = %Q and version = %Q",
-	    pkgname, version) != MPORT_OK)
+	    pkgname, version) != MPORT_OK) {
+		sqlite3_finalize(stmt);
 		RETURN_CURRENT_ERROR;
+	}
  
 	switch (sqlite3_step(stmt)) {
 	case SQLITE_ROW:

Modified: trunk/lib/libmport/merge_primative.c
===================================================================
--- trunk/lib/libmport/merge_primative.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/merge_primative.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -271,8 +271,10 @@
   
   ret = MPORT_OK;
         
-  if (mport_db_prepare(db, &stmt, "SELECT pkg FROM packages") != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(db, &stmt, "SELECT pkg FROM packages") != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
     
   while (1) {
     sret = sqlite3_step(stmt);
@@ -357,8 +359,10 @@
   mportBundleRead *inbundle;
   struct archive_entry *entry;
   
-  if (mport_db_prepare(db, &stmt, "SELECT pkg FROM packages") != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+  if (mport_db_prepare(db, &stmt, "SELECT pkg FROM packages") != MPORT_OK) {
+	  sqlite3_finalize(stmt);
+	  RETURN_CURRENT_ERROR;
+  }
   
   while (1) {
     ret = sqlite3_step(stmt);

Modified: trunk/lib/libmport/setting.c
===================================================================
--- trunk/lib/libmport/setting.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/setting.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -42,8 +42,10 @@
     if (name == NULL)
         return NULL;
 
-    if (mport_db_prepare(mport->db, &stmt, "SELECT val FROM settings WHERE name=%Q", name) != MPORT_OK)
-        return NULL;
+    if (mport_db_prepare(mport->db, &stmt, "SELECT val FROM settings WHERE name=%Q", name) != MPORT_OK) {
+		sqlite3_finalize(stmt);
+		return NULL;
+	}
 
     switch (sqlite3_step(stmt)) {
         case SQLITE_ROW:

Modified: trunk/lib/libmport/stats.c
===================================================================
--- trunk/lib/libmport/stats.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/stats.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -36,8 +36,10 @@
 
     *stats = s;
 
-    if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM packages") != MPORT_OK)
-        RETURN_CURRENT_ERROR;
+    if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM packages") != MPORT_OK) {
+		sqlite3_finalize(stmt);
+		RETURN_CURRENT_ERROR;
+	}
 
     if (sqlite3_step(stmt) != SQLITE_ROW) {
         sqlite3_finalize(stmt);
@@ -47,8 +49,10 @@
     s->pkg_installed = (unsigned int) sqlite3_column_int(stmt, 0);
     sqlite3_finalize(stmt);
 
-    if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM idx.packages") != MPORT_OK)
-        RETURN_CURRENT_ERROR;
+    if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM idx.packages") != MPORT_OK) {
+		sqlite3_finalize(stmt);
+		RETURN_CURRENT_ERROR;
+	}
 
     if (sqlite3_step(stmt) != SQLITE_ROW) {
         sqlite3_finalize(stmt);

Modified: trunk/lib/libmport/update_primative.c
===================================================================
--- trunk/lib/libmport/update_primative.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/update_primative.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -86,8 +86,10 @@
     int ret = MPORT_OK;
     const char *prefix;
 
-    if (mport_db_prepare(mport->db, &stmt, "SELECT prefix FROM packages WHERE pkg=%Q", pkg->name) != MPORT_OK)
-        RETURN_CURRENT_ERROR;
+    if (mport_db_prepare(mport->db, &stmt, "SELECT prefix FROM packages WHERE pkg=%Q", pkg->name) != MPORT_OK) {
+		sqlite3_finalize(stmt);
+		RETURN_CURRENT_ERROR;
+	}
 
     switch (sqlite3_step(stmt)) {
         case SQLITE_ROW:

Modified: trunk/lib/libmport/verify.c
===================================================================
--- trunk/lib/libmport/verify.c	2016-08-07 03:36:51 UTC (rev 7674)
+++ trunk/lib/libmport/verify.c	2016-08-07 04:58:55 UTC (rev 7675)
@@ -49,8 +49,10 @@
 	char md5[33];
 	
 	mport_call_msg_cb(mport, "Verifying %s-%s", pack->name, pack->version);
-	if (mport_db_prepare(mport->db, &stmt, "SELECT type,data,checksum FROM assets WHERE pkg=%Q", pack->name) != MPORT_OK)
+	if (mport_db_prepare(mport->db, &stmt, "SELECT type,data,checksum FROM assets WHERE pkg=%Q", pack->name) != MPORT_OK) {
+		sqlite3_finalize(stmt);
 		RETURN_CURRENT_ERROR;
+	}
 	
 	while (1) {
         ret = sqlite3_step(stmt);



More information about the Midnightbsd-cvs mailing list