forked from mirror/go-sqlite3
parent
3cbdae750e
commit
16175c1389
|
@ -0,0 +1,30 @@
|
||||||
|
package sqlite3_fuzz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"database/sql"
|
||||||
|
"io/ioutil"
|
||||||
|
|
||||||
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FuzzOpenExec(data []byte) int {
|
||||||
|
sep := bytes.IndexByte(data, 0)
|
||||||
|
if sep <= 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
err := ioutil.WriteFile("/tmp/fuzz.db", data[sep+1:], 0644)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
db, err := sql.Open("sqlite3", "/tmp/fuzz.db")
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
_, err = db.Exec(string(data[:sep-1]))
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}
|
|
@ -1676,7 +1676,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
|
||||||
//
|
//
|
||||||
// Because default is NORMAL this statement is always executed
|
// Because default is NORMAL this statement is always executed
|
||||||
if err := exec(fmt.Sprintf("PRAGMA synchronous = %s;", synchronousMode)); err != nil {
|
if err := exec(fmt.Sprintf("PRAGMA synchronous = %s;", synchronousMode)); err != nil {
|
||||||
C.sqlite3_close_v2(db)
|
conn.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue