[dovecot-cvs] dovecot/src/lib-sql driver-mysql.c, 1.12,
1.13 driver-pgsql.c, 1.7, 1.8 sql-api.c, 1.5, 1.6 sql-api.h,
1.5, 1.6
cras at dovecot.org
cras at dovecot.org
Sat Jan 14 20:47:43 EET 2006
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.39,
1.40 mail-cache.c, 1.76, 1.77 mail-cache.h, 1.25,
1.26 mail-index-private.h, 1.62, 1.63 mail-index-sync-update.c,
1.90, 1.91 mail-index-sync.c, 1.66,
1.67 mail-index-transaction-private.h, 1.27,
1.28 mail-index-transaction-view.c, 1.15,
1.16 mail-index-transaction.c, 1.71,
1.72 mail-index-view-sync.c, 1.48, 1.49 mail-index-view.c,
1.41, 1.42 mail-index.c, 1.218, 1.219 mail-index.h, 1.156,
1.157 mail-transaction-log-view.c, 1.44,
1.45 mail-transaction-log.c, 1.105,
1.106 mail-transaction-log.h, 1.30, 1.31
- Next message: [dovecot-cvs] dovecot/src/lib-storage mail-copy.c, 1.5,
1.6 mail-storage.c, 1.45, 1.46 mail-storage.h, 1.101,
1.102 mail.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/lib/cvs/dovecot/src/lib-sql
In directory talvi:/tmp/cvs-serv16037/lib-sql
Modified Files:
driver-mysql.c driver-pgsql.c sql-api.c sql-api.h
Log Message:
deinit, unref, destroy, close, free, etc. functions now take a pointer to
their data pointer, and set it to NULL. This makes double-frees less likely
to cause security holes.
Index: driver-mysql.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-sql/driver-mysql.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- driver-mysql.c 13 Jan 2006 20:26:24 -0000 1.12
+++ driver-mysql.c 14 Jan 2006 18:47:40 -0000 1.13
@@ -510,7 +510,7 @@
{
const char *error;
- if (sql_transaction_commit_s(ctx, &error) < 0)
+ if (sql_transaction_commit_s(&ctx, &error) < 0)
callback(error, context);
else
callback(NULL, context);
@@ -537,7 +537,7 @@
}
sql_result_free(result);
}
- sql_transaction_rollback(_ctx);
+ sql_transaction_rollback(&_ctx);
return ret;
}
@@ -547,7 +547,7 @@
struct mysql_transaction_context *ctx =
(struct mysql_transaction_context *)_ctx;
- str_free(ctx->queries);
+ str_free(&ctx->queries);
i_free(ctx);
}
Index: driver-pgsql.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-sql/driver-pgsql.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- driver-pgsql.c 13 Jan 2006 20:26:24 -0000 1.7
+++ driver-pgsql.c 14 Jan 2006 18:47:40 -0000 1.8
@@ -72,10 +72,8 @@
static void driver_pgsql_close(struct pgsql_db *db)
{
- if (db->io != NULL) {
- io_remove(db->io);
- db->io = NULL;
- }
+ if (db->io != NULL)
+ io_remove(&db->io);
db->io_dir = 0;
PQfinish(db->pg);
@@ -131,7 +129,7 @@
if (db->io_dir != io_dir) {
if (db->io != NULL)
- io_remove(db->io);
+ io_remove(&db->io);
db->io = io_dir == 0 ? NULL :
io_add(PQsocket(db->pg), io_dir, connect_callback, db);
db->io_dir = io_dir;
@@ -211,8 +209,7 @@
} while (PQgetResult(db->pg) != NULL);
- io_remove(db->io);
- db->io = NULL;
+ io_remove(&db->io);
db->querying = FALSE;
if (db->queue != NULL && db->connected)
@@ -283,10 +280,8 @@
return;
}
- if (db->io != NULL) {
- io_remove(db->io);
- db->io = NULL;
- }
+ if (db->io != NULL)
+ io_remove(&db->io);
result->pgres = PQgetResult(db->pg);
result_finish(result);
@@ -302,8 +297,7 @@
if (ret > 0)
return;
- io_remove(db->io);
- db->io = NULL;
+ io_remove(&db->io);
if (ret < 0) {
db->connected = FALSE;
@@ -375,10 +369,8 @@
if (db->queue != NULL)
queue_send_next(db);
- if (db->queue == NULL) {
- timeout_remove(db->queue_to);
- db->queue_to = NULL;
- }
+ if (db->queue == NULL)
+ timeout_remove(&db->queue_to);
}
static void
@@ -477,7 +469,7 @@
else {
/* have to move our existing I/O handler to new I/O loop */
old_io = *db->io;
- io_remove(db->io);
+ io_remove(&db->io);
db->ioloop = io_loop_create(default_pool);
@@ -488,8 +480,7 @@
driver_pgsql_query(_db, query, pgsql_query_s_callback, db);
io_loop_run(db->ioloop);
- io_loop_destroy(db->ioloop);
- db->ioloop = NULL;
+ io_loop_destroy(&db->ioloop);
i_assert(db->io == NULL);
Index: sql-api.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-sql/sql-api.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- sql-api.c 10 Dec 2005 18:57:11 -0000 1.5
+++ sql-api.c 14 Jan 2006 18:47:40 -0000 1.6
@@ -26,9 +26,10 @@
i_fatal("Unknown database driver '%s'", db_driver);
}
-void sql_deinit(struct sql_db *db)
+void sql_deinit(struct sql_db **db)
{
- db->deinit(db);
+ (*db)->deinit(*db);
+ *db = NULL;
}
enum sql_db_flags sql_get_flags(struct sql_db *db)
@@ -127,20 +128,29 @@
return db->transaction_begin(db);
}
-void sql_transaction_commit(struct sql_transaction_context *ctx,
+void sql_transaction_commit(struct sql_transaction_context **_ctx,
sql_commit_callback_t *callback, void *context)
{
+ struct sql_transaction_context *ctx = *_ctx;
+
+ *_ctx = NULL;
ctx->db->transaction_commit(ctx, callback, context);
}
-int sql_transaction_commit_s(struct sql_transaction_context *ctx,
+int sql_transaction_commit_s(struct sql_transaction_context **_ctx,
const char **error_r)
{
+ struct sql_transaction_context *ctx = *_ctx;
+
+ *_ctx = NULL;
return ctx->db->transaction_commit_s(ctx, error_r);
}
-void sql_transaction_rollback(struct sql_transaction_context *ctx)
+void sql_transaction_rollback(struct sql_transaction_context **_ctx)
{
+ struct sql_transaction_context *ctx = *_ctx;
+
+ *_ctx = NULL;
ctx->db->transaction_rollback(ctx);
}
Index: sql-api.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-sql/sql-api.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- sql-api.h 10 Dec 2005 18:57:11 -0000 1.5
+++ sql-api.h 14 Jan 2006 18:47:40 -0000 1.6
@@ -20,7 +20,7 @@
/* Initialize database connections. db_driver is the database driver name,
eg. "mysql" or "pgsql". connect_string is driver-specific. */
struct sql_db *sql_init(const char *db_driver, const char *connect_string);
-void sql_deinit(struct sql_db *db);
+void sql_deinit(struct sql_db **db);
/* Returns SQL database state flags. */
enum sql_db_flags sql_get_flags(struct sql_db *db);
@@ -68,12 +68,12 @@
transaction at a time. */
struct sql_transaction_context *sql_transaction_begin(struct sql_db *db);
/* Commit transaction. */
-void sql_transaction_commit(struct sql_transaction_context *ctx,
+void sql_transaction_commit(struct sql_transaction_context **ctx,
sql_commit_callback_t *callback, void *context);
/* Synchronous commit. Returns 0 if ok, -1 if error. */
-int sql_transaction_commit_s(struct sql_transaction_context *ctx,
+int sql_transaction_commit_s(struct sql_transaction_context **ctx,
const char **error_r);
-void sql_transaction_rollback(struct sql_transaction_context *ctx);
+void sql_transaction_rollback(struct sql_transaction_context **ctx);
/* Execute query in given transaction. */
void sql_update(struct sql_transaction_context *ctx, const char *query);
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.39,
1.40 mail-cache.c, 1.76, 1.77 mail-cache.h, 1.25,
1.26 mail-index-private.h, 1.62, 1.63 mail-index-sync-update.c,
1.90, 1.91 mail-index-sync.c, 1.66,
1.67 mail-index-transaction-private.h, 1.27,
1.28 mail-index-transaction-view.c, 1.15,
1.16 mail-index-transaction.c, 1.71,
1.72 mail-index-view-sync.c, 1.48, 1.49 mail-index-view.c,
1.41, 1.42 mail-index.c, 1.218, 1.219 mail-index.h, 1.156,
1.157 mail-transaction-log-view.c, 1.44,
1.45 mail-transaction-log.c, 1.105,
1.106 mail-transaction-log.h, 1.30, 1.31
- Next message: [dovecot-cvs] dovecot/src/lib-storage mail-copy.c, 1.5,
1.6 mail-storage.c, 1.45, 1.46 mail-storage.h, 1.101,
1.102 mail.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list