summaryrefslogtreecommitdiffstats
path: root/libmsi
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-17 16:48:41 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:07 +0100
commited86a69201348840af97c58955c3ab8dee986282 (patch)
tree30487c9bb1e6e935ed36790ef2206f868e564720 /libmsi
parent1bf7dffae6f62248a1ea6e1ac38067d02c9b3d41 (diff)
downloadmsitools-ed86a69201348840af97c58955c3ab8dee986282.tar.gz
msitools-ed86a69201348840af97c58955c3ab8dee986282.tar.xz
msitools-ed86a69201348840af97c58955c3ab8dee986282.zip
Add more public functions precondition checks
Diffstat (limited to 'libmsi')
-rw-r--r--libmsi/libmsi-database.c26
-rw-r--r--libmsi/libmsi-query.c25
-rw-r--r--libmsi/libmsi-summary-info.c15
3 files changed, 40 insertions, 26 deletions
diff --git a/libmsi/libmsi-database.c b/libmsi/libmsi-database.c
index 66fa04d..c66d4de 100644
--- a/libmsi/libmsi-database.c
+++ b/libmsi/libmsi-database.c
@@ -1350,10 +1350,12 @@ libmsi_database_export (LibmsiDatabase *db,
{
unsigned r = LIBMSI_RESULT_OUTOFMEMORY;
- TRACE("%x %s %d\n", db, debugstr_a(szTable), fd);
+ TRACE("%p %s %d\n", db, debugstr_a(szTable), fd);
- if( !db )
- return LIBMSI_RESULT_INVALID_HANDLE;
+ g_return_val_if_fail (LIBMSI_IS_DATABASE (db), FALSE);
+ g_return_val_if_fail (table, FALSE);
+ g_return_val_if_fail (fd >= 0, FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
g_object_ref(db);
r = _libmsi_database_export(db, table, fd);
@@ -2002,6 +2004,7 @@ libmsi_database_merge (LibmsiDatabase *db,
g_return_val_if_fail (LIBMSI_IS_DATABASE (db), FALSE);
g_return_val_if_fail (LIBMSI_IS_DATABASE (merge), FALSE);
g_return_val_if_fail (!tablename || *tablename, FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
g_object_ref(db);
g_object_ref(merge);
@@ -2217,15 +2220,17 @@ end:
**/
gboolean
libmsi_database_apply_transform (LibmsiDatabase *db,
- const char *szTransformFile,
+ const char *file,
GError **error)
{
unsigned r;
+ g_return_val_if_fail (LIBMSI_IS_DATABASE (db), FALSE);
+ g_return_val_if_fail (file, FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
+
g_object_ref(db);
- if( !db )
- return LIBMSI_RESULT_INVALID_HANDLE;
- r = _libmsi_database_apply_transform( db, szTransformFile );
+ r = _libmsi_database_apply_transform (db, file);
g_object_unref(db);
if (r != LIBMSI_RESULT_SUCCESS)
@@ -2326,6 +2331,7 @@ libmsi_database_commit (LibmsiDatabase *db, GError **error)
TRACE ("%p\n", db);
g_return_val_if_fail (LIBMSI_IS_DATABASE (db), FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
g_object_ref(db);
if (db->mode == LIBMSI_DB_OPEN_READONLY)
@@ -2465,8 +2471,9 @@ libmsi_database_get_primary_keys (LibmsiDatabase *db,
TRACE("%d %s %p\n", db, debugstr_a(table), prec);
- if( !db )
- return NULL;
+ g_return_val_if_fail (LIBMSI_IS_DATABASE (db), NULL);
+ g_return_val_if_fail (table != NULL, NULL);
+ g_return_val_if_fail (!error || *error == NULL, NULL);
g_object_ref(db);
r = _libmsi_database_get_primary_keys(db, table, &rec);
@@ -2552,6 +2559,7 @@ libmsi_database_new (const gchar *path, const char *persist, GError **error)
gboolean patch = false;
g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (!error || *error == NULL, NULL);
if (IS_INTMSIDBOPEN (persist - LIBMSI_DB_OPEN_PATCHFILE)) {
TRACE("Database is a patch\n");
diff --git a/libmsi/libmsi-query.c b/libmsi/libmsi-query.c
index 1a951c9..c4e919b 100644
--- a/libmsi/libmsi-query.c
+++ b/libmsi/libmsi-query.c
@@ -415,8 +415,9 @@ libmsi_query_fetch (LibmsiQuery *query, GError **error)
TRACE("%p\n", query);
- if( !query )
- return NULL;
+ g_return_val_if_fail (LIBMSI_IS_QUERY (query), NULL);
+ g_return_val_if_fail (!error || *error == NULL, NULL);
+
g_object_ref(query);
ret = _libmsi_query_fetch( query, &record );
g_object_unref(query);
@@ -445,8 +446,8 @@ libmsi_query_close (LibmsiQuery *query, GError **error)
TRACE("%p\n", query );
- if( !query )
- return LIBMSI_RESULT_INVALID_HANDLE;
+ g_return_val_if_fail (LIBMSI_IS_QUERY (query), FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
g_object_ref(query);
view = query->view;
@@ -497,7 +498,11 @@ libmsi_query_execute (LibmsiQuery *query, LibmsiRecord *rec, GError **error)
{
LibmsiResult ret;
- TRACE("%d %d\n", query, rec);
+ TRACE("%p %p\n", query, rec);
+
+ g_return_val_if_fail (LIBMSI_IS_QUERY (query), FALSE);
+ g_return_val_if_fail (!rec || LIBMSI_IS_RECORD (rec), FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
if( !query )
return LIBMSI_RESULT_INVALID_HANDLE;
@@ -614,11 +619,10 @@ libmsi_query_get_column_info (LibmsiQuery *query, LibmsiColInfo info, GError **e
TRACE("%p %d\n", query, info);
- if (info != LIBMSI_COL_INFO_NAMES && info != LIBMSI_COL_INFO_TYPES)
- return NULL;
-
- if (!query)
- return NULL;
+ g_return_val_if_fail (LIBMSI_IS_QUERY (query), NULL);
+ g_return_val_if_fail (info == LIBMSI_COL_INFO_NAMES ||
+ info == LIBMSI_COL_INFO_TYPES, NULL);
+ g_return_val_if_fail (!error || *error == NULL, NULL);
g_object_ref(query);
r = _libmsi_query_get_column_info( query, info, &rec);
@@ -644,6 +648,7 @@ libmsi_query_get_error (LibmsiQuery *query, gchar **column, GError **error)
LibmsiView *v;
g_return_if_fail (LIBMSI_IS_QUERY (query));
+ g_return_if_fail (!column || *column == NULL);
g_return_if_fail (!error || *error == NULL);
v = query->view;
diff --git a/libmsi/libmsi-summary-info.c b/libmsi/libmsi-summary-info.c
index 01410a0..d8b5ed7 100644
--- a/libmsi/libmsi-summary-info.c
+++ b/libmsi/libmsi-summary-info.c
@@ -678,8 +678,8 @@ libmsi_summary_info_get_int (LibmsiSummaryInfo *self, LibmsiProperty prop,
LibmsiPropertyType type;
gint val;
- g_return_val_if_fail (LIBMSI_SUMMARY_INFO (self), FALSE);
- g_return_val_if_fail (!error || *error == NULL, FALSE);
+ g_return_val_if_fail (LIBMSI_SUMMARY_INFO (self), -1);
+ g_return_val_if_fail (!error || *error == NULL, -1);
type = LIBMSI_PROPERTY_TYPE_INT;
_summary_info_get_property (self, prop, &type, &val,
@@ -703,8 +703,8 @@ libmsi_summary_info_get_filetime (LibmsiSummaryInfo *self, LibmsiProperty prop,
LibmsiPropertyType type;
guint64 val;
- g_return_val_if_fail (LIBMSI_SUMMARY_INFO (self), FALSE);
- g_return_val_if_fail (!error || *error == NULL, FALSE);
+ g_return_val_if_fail (LIBMSI_SUMMARY_INFO (self), 0);
+ g_return_val_if_fail (!error || *error == NULL, 0);
type = LIBMSI_PROPERTY_TYPE_FILETIME;
_summary_info_get_property (self, prop, &type, NULL,
@@ -996,13 +996,11 @@ libmsi_summary_info_persist (LibmsiSummaryInfo *si, GError **error)
{
unsigned ret;
+ g_return_val_if_fail (LIBMSI_IS_SUMMARY_INFO (si), FALSE);
g_return_val_if_fail (!error || *error == NULL, FALSE);
TRACE("%p\n", si);
- if (!si)
- return FALSE;
-
g_object_ref (si);
ret = suminfo_persist (si);
g_object_unref (si);
@@ -1027,6 +1025,9 @@ libmsi_summary_info_new (LibmsiDatabase *database, unsigned update_count,
{
LibmsiSummaryInfo *self;
+ g_return_val_if_fail (LIBMSI_IS_DATABASE (database), NULL);
+ g_return_val_if_fail (!error || *error == NULL, NULL);
+
self = g_object_new (LIBMSI_TYPE_SUMMARY_INFO,
"database", database,
"update-count", update_count,