mattn / go-sqlite3

sqlite3 driver for go using database/sql
http://mattn.github.io/go-sqlite3
MIT License
8.05k stars 1.11k forks source link

SetFileControlInt performs unsafe conversion from Go int to C int #1299

Open rittneje opened 6 days ago

rittneje commented 6 days ago

Go int and C int are not guaranteed to be the same size. But right now SetFileControlInt blindly casts an int to a C.int, which can overflow or underflow. This is partially responsible for the issue described in #1298. (Even if they were the same size, it still would have been wrong for that op code because SQLite always wants a 64-bit argument even on a 32-bit architecture.)

Fix SetFileControlInt to do explicit bounds checking before casting, and return an error if the number would overflow or underflow.