Mercurial > dovecot > core-2.2
diff src/lib-sql/sql-api.c @ 3879:928229f8b3e6 HEAD
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.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 14 Jan 2006 20:47:20 +0200 |
parents | 3dd0ab18d8da |
children | b967ffb7e3a6 |
line wrap: on
line diff
--- a/src/lib-sql/sql-api.c Sat Jan 14 19:23:22 2006 +0200 +++ b/src/lib-sql/sql-api.c Sat Jan 14 20:47:20 2006 +0200 @@ -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); }