[Midnightbsd-cvs] src [6613] trunk/lib/libmport/check_preconditions.c: dont leak memory
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Mar 1 15:17:55 EST 2014
Revision: 6613
http://svnweb.midnightbsd.org/src/?rev=6613
Author: laffer1
Date: 2014-03-01 15:17:55 -0500 (Sat, 01 Mar 2014)
Log Message:
-----------
dont leak memory
Modified Paths:
--------------
trunk/lib/libmport/check_preconditions.c
Modified: trunk/lib/libmport/check_preconditions.c
===================================================================
--- trunk/lib/libmport/check_preconditions.c 2014-03-01 20:09:53 UTC (rev 6612)
+++ trunk/lib/libmport/check_preconditions.c 2014-03-01 20:17:55 UTC (rev 6613)
@@ -27,6 +27,7 @@
#include <sys/cdefs.h>
__MBSDID("$MidnightBSD$");
+#include <stdlib.h>
#include <string.h>
#include "mport.h"
@@ -74,6 +75,7 @@
sqlite3_stmt *stmt;
const char *inst_version;
const char *os_release;
+ 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)
@@ -87,10 +89,14 @@
/* Row was found */
inst_version = sqlite3_column_text(stmt, 0);
os_release = sqlite3_column_text(stmt, 1);
+ system_os_release = (char *)mport_get_osrelease();
/* Different os release version should not be considered the same package */
- if (strcmp(os_release, mport_get_osrelease()) != 0)
+ if (strcmp(os_release, system_os_release) != 0) {
+ free(system_os_release);
break;
+ }
+ free(system_os_release);
SET_ERRORX(MPORT_ERR_FATAL, "%s (version %s) is already installed.", pack->name, inst_version);
sqlite3_finalize(stmt);
@@ -148,6 +154,7 @@
sqlite3_stmt *stmt, *lookup;
const char *depend_pkg, *depend_version, *inst_version;
const char *os_release;
+ char *system_os_release;
int ret;
/* check for depends */
@@ -160,6 +167,8 @@
sqlite3_finalize(stmt);
RETURN_CURRENT_ERROR;
}
+
+ system_os_release = (char *)mport_get_osrelease();
while (1) {
ret = sqlite3_step(stmt);
@@ -172,6 +181,9 @@
SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+
+ free(system_os_release);
+
RETURN_CURRENT_ERROR;
}
@@ -181,10 +193,11 @@
os_release = sqlite3_column_text(lookup, 1);
int ok;
- if (strcmp(os_release, mport_get_osrelease()) != 0) {
- SET_ERRORX(MPORT_ERR_FATAL, "%s depends on %s version %s. Version %s for MidnightBSD %s is installed.", pack->name, depend_pkg, depend_version, inst_version, os_release);
+ if (strcmp(os_release, system_os_release) != 0) {
+ SET_ERRORX(MPORT_ERR_FATAL, "%s depends on %s version %s. Version %s for MidnightBSD %s is installed.", pack->name, depend_pkg, depend_version == NULL ? "<any>" : depend_version, inst_version, os_release);
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
}
@@ -197,11 +210,13 @@
if (ok > 0) {
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
} else if (ok == -1) {
SET_ERRORX(MPORT_ERR_FATAL, "%s depends on %s version %s. Version %s is installed.", pack->name, depend_pkg, depend_version, inst_version);
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
}
@@ -211,6 +226,7 @@
SET_ERRORX(MPORT_ERR_FATAL, "%s depends on %s, which is not installed.", pack->name, depend_pkg);
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
break;
default:
@@ -217,6 +233,7 @@
SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
}
@@ -231,9 +248,12 @@
SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
sqlite3_finalize(lookup);
sqlite3_finalize(stmt);
+ free(system_os_release);
RETURN_CURRENT_ERROR;
}
}
+
+ free(system_os_release);
return MPORT_OK;
}
More information about the Midnightbsd-cvs
mailing list