]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Finally fix an issue with data isolation in sqlite.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 10 Jul 2015 15:24:32 +0000 (16:24 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 10 Jul 2015 15:24:32 +0000 (16:24 +0100)
src/libutil/sqlite_utils.c
src/libutil/sqlite_utils.h

index 5691be132302d65421b0e2ac13b259501688fa10..61ba49cafd1d57921bec6aef5d41f1560902b390 100644 (file)
@@ -156,6 +156,10 @@ rspamd_sqlite3_run_prstmt (sqlite3 *db, GArray *stmts,
                        }
                }
 
+               if (!(nst->flags & RSPAMD_SQLITE3_STMT_MULTIPLE)) {
+                       sqlite3_reset (stmt);
+               }
+
                return SQLITE_OK;
        }
        else if (retcode != SQLITE_DONE) {
@@ -163,6 +167,10 @@ rspamd_sqlite3_run_prstmt (sqlite3 *db, GArray *stmts,
                                retcode, sqlite3_errmsg (db));
        }
 
+       if (!(nst->flags & RSPAMD_SQLITE3_STMT_MULTIPLE)) {
+               sqlite3_reset (stmt);
+       }
+
        return retcode;
 }
 
index 18dd20a6fab88bfa00fb414c2f78f0bd9267653b..3a8f81b18280dd7dec79a3b6f6de515cfe89c74f 100644 (file)
@@ -29,6 +29,8 @@
 #include "config.h"
 #include "sqlite3.h"
 
+#define RSPAMD_SQLITE3_STMT_MULTIPLE (1 << 0)
+
 struct rspamd_sqlite3_prstmt {
        gint idx;
        const gchar *sql;
@@ -36,6 +38,7 @@ struct rspamd_sqlite3_prstmt {
        sqlite3_stmt *stmt;
        gint result;
        const gchar *ret;
+       gint flags;
 };
 
 /**