X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/72a12576750f52947eb043106ba5c12c0d07decf..b1ab9ed8d0e0f1c3b66d7daa8fd5564444c56195:/security_utilities/sqlutils.h diff --git a/security_utilities/sqlutils.h b/security_utilities/sqlutils.h new file mode 100644 index 00000000..6837a036 --- /dev/null +++ b/security_utilities/sqlutils.h @@ -0,0 +1,37 @@ +// +// sqlutils.h +// Security +// +// Created by Fabrice Gautier on 8/26/11. +// Copyright (c) 2011 Apple, Inc. All rights reserved. +// + +/* + * sqlutils.h - some wrapper for sql3lite + */ +#ifndef _SECURITY_UTILITIES_SQLUTILS_H_ +#define _SECURITY_UTILITIES_SQLUTILS_H_ + +#include + +/* Those are just wrapper around the sqlite3 functions, but they have size_t for some len parameters, + and checks for overflow before casting to int */ +static inline int sqlite3_bind_blob_wrapper(sqlite3_stmt* pStmt, int i, const void* zData, size_t n, void(*xDel)(void*)) +{ + if(n>INT_MAX) return SQLITE_TOOBIG; + return sqlite3_bind_blob(pStmt, i, zData, (int)n, xDel); +} + +static inline int sqlite3_bind_text_wrapper(sqlite3_stmt* pStmt, int i, const void* zData, size_t n, void(*xDel)(void*)) +{ + if(n>INT_MAX) return SQLITE_TOOBIG; + return sqlite3_bind_text(pStmt, i, zData, (int)n, xDel); +} + +static inline int sqlite3_prepare_wrapper(sqlite3 *db, const char *zSql, size_t nByte, sqlite3_stmt **ppStmt, const char **pzTail) +{ + if(nByte>INT_MAX) return SQLITE_TOOBIG; + return sqlite3_prepare(db, zSql, (int)nByte, ppStmt, pzTail); +} + +#endif