mirror of
https://github.com/isar/rusqlite.git
synced 2025-08-21 05:41:06 +08:00
Check when buffer is too long.
This commit is contained in:
12
src/blob.rs
12
src/blob.rs
@@ -45,6 +45,12 @@ impl<'conn> SqliteBlob<'conn> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn read(&mut self, buf: &mut [u8]) -> SqliteResult<i32> {
|
pub fn read(&mut self, buf: &mut [u8]) -> SqliteResult<i32> {
|
||||||
|
if buf.len() > ::std::i32::MAX as usize {
|
||||||
|
return Err(SqliteError {
|
||||||
|
code: ffi::SQLITE_TOOBIG,
|
||||||
|
message: "buffer too long".to_string()
|
||||||
|
});
|
||||||
|
}
|
||||||
let mut n = buf.len() as i32;
|
let mut n = buf.len() as i32;
|
||||||
let size = self.size();
|
let size = self.size();
|
||||||
if self.pos + n > size {
|
if self.pos + n > size {
|
||||||
@@ -61,6 +67,12 @@ impl<'conn> SqliteBlob<'conn> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn write(&mut self, buf: &[u8]) -> SqliteResult<i32> {
|
pub fn write(&mut self, buf: &[u8]) -> SqliteResult<i32> {
|
||||||
|
if buf.len() > ::std::i32::MAX as usize {
|
||||||
|
return Err(SqliteError {
|
||||||
|
code: ffi::SQLITE_TOOBIG,
|
||||||
|
message: "buffer too long".to_string()
|
||||||
|
});
|
||||||
|
}
|
||||||
let n = buf.len() as i32;
|
let n = buf.len() as i32;
|
||||||
let size = self.size();
|
let size = self.size();
|
||||||
if self.pos + n > size {
|
if self.pos + n > size {
|
||||||
|
Reference in New Issue
Block a user