]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
sqlite3: Fix wrappers to not assign to invalid output parameter.
authorJulian Andres Klode <jak@jak-linux.org>
Fri, 14 May 2010 03:39:52 +0000 (20:39 -0700)
committerEvan Nemerson <evan@coeus-group.com>
Fri, 14 May 2010 03:39:52 +0000 (20:39 -0700)
Check that the output parameter is not null before assigning to
it. Without this, passing null as errmsg results in segfaults since
the function dereferences a null pointer.

Fixes bug 61845.

vapi/sqlite3.vapi

index d44db089dc221aeada858eb68e3d8448433ae62e..edff3734f2d24ff62cb98d7db8c753da5b2bdd9e 100644 (file)
@@ -34,10 +34,10 @@ namespace Sqlite {
                public int exec (string sql, Callback? sqlite3_callback = null, out string errmsg = null) {
                        unowned string sqlite_errmsg;
                        var ec = this._exec (sql, sqlite3_callback, out sqlite_errmsg);
-                       if (sqlite_errmsg != null) {
+                       if (&errmsg != null) {
                                errmsg = sqlite_errmsg;
-                               Sqlite.Memory.free ((void*) sqlite_errmsg);
                        }
+                       Sqlite.Memory.free ((void*) sqlite_errmsg);
                        return ec;
                }
                public int extended_result_codes (int onoff);
@@ -63,10 +63,10 @@ namespace Sqlite {
                        }
                        Sqlite.Database.free_table (sqlite_resultp);
 
-                       if (sqlite_errmsg != null) {
+                       if (&errmsg != null) {
                                errmsg = sqlite_errmsg;
-                               Sqlite.Memory.free ((void*) sqlite_errmsg);
                        }
+                       Sqlite.Memory.free ((void*) sqlite_errmsg);
                        return ec;
                }
                public static int open (string filename, out Database db);