mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
db.mysql: fix invalid memory access in exec_one for returned rows with NULL fields (#21317)
This commit is contained in:
parent
e235641c29
commit
2192d9b1e5
@ -323,7 +323,7 @@ pub fn (db &DB) exec_one(query string) !Row {
|
||||
|
||||
mut row := Row{}
|
||||
for i in 0 .. num_cols {
|
||||
if unsafe { row_vals == &u8(0) } {
|
||||
if unsafe { row_vals == &u8(0) } || unsafe { row_vals[i] == nil } {
|
||||
row.vals << ''
|
||||
} else {
|
||||
row.vals << mystring(unsafe { &u8(row_vals[i]) })
|
||||
|
@ -16,7 +16,8 @@ fn test_mysql() {
|
||||
|
||||
response = db.exec('create table if not exists users (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
username TEXT
|
||||
username TEXT,
|
||||
last_name TEXT NULL DEFAULT NULL
|
||||
)')!
|
||||
assert response == []mysql.Row{}
|
||||
|
||||
@ -48,36 +49,36 @@ fn test_mysql() {
|
||||
'jackson',
|
||||
])!
|
||||
assert response[0] == mysql.Row{
|
||||
vals: ['1', 'jackson']
|
||||
vals: ['1', 'jackson', '']
|
||||
}
|
||||
|
||||
response = db.exec_param_many('select * from users where username = ? and id = ?',
|
||||
['bailey', '3'])!
|
||||
assert response[0] == mysql.Row{
|
||||
vals: ['3', 'bailey']
|
||||
vals: ['3', 'bailey', '']
|
||||
}
|
||||
|
||||
response = db.exec_param_many('select * from users', [''])!
|
||||
assert response == [
|
||||
mysql.Row{
|
||||
vals: ['1', 'jackson']
|
||||
vals: ['1', 'jackson', '']
|
||||
},
|
||||
mysql.Row{
|
||||
vals: ['2', 'shannon']
|
||||
vals: ['2', 'shannon', '']
|
||||
},
|
||||
mysql.Row{
|
||||
vals: ['3', 'bailey']
|
||||
vals: ['3', 'bailey', '']
|
||||
},
|
||||
mysql.Row{
|
||||
vals: ['4', 'blaze']
|
||||
vals: ['4', 'blaze', '']
|
||||
},
|
||||
mysql.Row{
|
||||
vals: ['5', 'Hi']
|
||||
vals: ['5', 'Hi', '']
|
||||
},
|
||||
]
|
||||
|
||||
response = db.exec_param('select * from users where username = ?', 'blaze')!
|
||||
assert response[0] == mysql.Row{
|
||||
vals: ['4', 'blaze']
|
||||
vals: ['4', 'blaze', '']
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user