In tclsqlite.c, function DbMain()... somewhere between 3.19 and 3.23 there was
a re-write of the argument parsing code for the sqlite command, and following
code was removed and not completely replaced with a new equivalent:
if( objc<3 || (objc&1)!=1 ){
Tcl_WrongNumArgs(interp, 1, objv,
"HANDLE FILENAME ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN?"
" ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN? ?-uri BOOLEAN?"
#if defined(SQLITE_HAS_CODEC) && !defined(SQLITE_OMIT_CODEC_FROM_TCL)
" ?-key CODECKEY?"
#endif
);
return TCL_ERROR;
}
The result is that if you use the sqlite command with no arguments it core
dumps on the code following, where it tries to use objv[1], instead of
returning an error.
$ tclsh
% package require sqlite3
3.24.0
% sqlite3
Segmentation fault (core dumped)
It looks like there is an attempt to handle missing arguments at the top of the
“for(i=2; i<objc; i++)” loop but if there are no arguments that code is
bypassed.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users