mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-12-29 21:00:54 +00:00
fix(postgres): don't panic if M or C Notice fields are not UTF-8 (#3346)
* fix(postgres): don't panic if `M` or `C` Notice fields are not UTF-8 This has been observed with an old version of PostgreSQL (11.0.4) running on Windows Server 2016 with windows-1252 encoding and French locale. This change replaces invalid UTF-8 fields with a default string, so the other fields can still be read if they are valid. * Revert "fix(postgres): don't panic if `M` or `C` Notice fields are not UTF-8" This reverts commit 362ca98bbdfef14f7f85f53e6d12fdcd8120ea22. * Check that Notice M and C fields are valid UTF-8 Otherwise, we return the invalid UTF-8 error to avoid panicking later.
This commit is contained in:
parent
83a7d14e58
commit
f2f17a7bc5
@ -153,13 +153,19 @@ impl Decode<'_> for Notice {
|
||||
}
|
||||
|
||||
b'M' => {
|
||||
_ = from_utf8(&buf[v.0 as usize..v.1 as usize])
|
||||
.map_err(|_| notice_protocol_err())?;
|
||||
message = v;
|
||||
}
|
||||
|
||||
b'C' => {
|
||||
_ = from_utf8(&buf[v.0 as usize..v.1 as usize])
|
||||
.map_err(|_| notice_protocol_err())?;
|
||||
code = v;
|
||||
}
|
||||
|
||||
// If more fields are added, make sure to check that they are valid UTF-8,
|
||||
// otherwise the get_cached_str method will panic.
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user