X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/c38e3ce98599a410a47dc10253faa4d5830f13b2..427c49bcad63d042b29ada2ac27e3dfc4845c779:/utilities/src/sqlutils.h diff --git a/utilities/src/sqlutils.h b/utilities/src/sqlutils.h new file mode 100644 index 00000000..6837a036 --- /dev/null +++ b/utilities/src/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