aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-05-05 13:04:24 +1000
committerSteve Bennett <steveb@workware.net.au>2025-07-16 09:34:08 +1000
commitdc4117996113d8fc379d0f4c46b078aa16e6ccf7 (patch)
tree4b79c4cd1234cead4c7528e3b70331f8ff0387b9
parentf72a03487ec28328678d48472026877e7d66bc29 (diff)
downloadjimtcl-dc4117996113d8fc379d0f4c46b078aa16e6ccf7.zip
jimtcl-dc4117996113d8fc379d0f4c46b078aa16e6ccf7.tar.gz
jimtcl-dc4117996113d8fc379d0f4c46b078aa16e6ccf7.tar.bz2
jim-sqlite3: Add taint support
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim-sqlite3.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/jim-sqlite3.c b/jim-sqlite3.c
index 61d4c52..dbb3d4f 100644
--- a/jim-sqlite3.c
+++ b/jim-sqlite3.c
@@ -75,6 +75,11 @@ static Jim_Obj *JimSqliteFormatQuery(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
int fmtLen;
Jim_Obj *resObjPtr;
+ if (Jim_GetObjTaint(fmtObjPtr) & JIM_TAINT_ANY) {
+ Jim_SetResultString(interp, "sqlite3 query: tainted data", -1);
+ return NULL;
+ }
+
fmt = Jim_GetString(fmtObjPtr, &fmtLen);
resObjPtr = Jim_NewStringObj(interp, "", 0);
while (fmtLen) {
@@ -269,6 +274,12 @@ static int JimSqliteOpenCommand(Jim_Interp *interp, int argc, Jim_Obj *const *ar
Jim_WrongNumArgs(interp, 1, argv, "dbname");
return JIM_ERR;
}
+
+ if (Jim_CheckTaint(interp, JIM_TAINT_ANY)) {
+ Jim_SetTaintError(interp, 1, argv);
+ return JIM_ERR;
+ }
+
r = sqlite3_open(Jim_String(argv[1]), &db);
if (r != SQLITE_OK) {
Jim_SetResultString(interp, sqlite3_errmsg(db), -1);