From fa5039d6aad50b41be0bb1447e26141b78054f11 Mon Sep 17 00:00:00 2001 From: Austin Bonander Date: Thu, 15 Aug 2024 03:29:45 -0700 Subject: [PATCH] fix: audit `sqlx_postgres::types::bit_vec` for overflowing casts --- sqlx-postgres/src/types/bit_vec.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sqlx-postgres/src/types/bit_vec.rs b/sqlx-postgres/src/types/bit_vec.rs index 6b48c722d..299aaf828 100644 --- a/sqlx-postgres/src/types/bit_vec.rs +++ b/sqlx-postgres/src/types/bit_vec.rs @@ -8,6 +8,7 @@ use crate::{ use bit_vec::BitVec; use sqlx_core::bytes::Buf; use std::{io, mem}; +use crate::arguments::value_size_int4_checked; impl Type for BitVec { fn type_info() -> PgTypeInfo { @@ -31,7 +32,9 @@ impl PgHasArrayType for BitVec { impl Encode<'_, Postgres> for BitVec { fn encode_by_ref(&self, buf: &mut PgArgumentBuffer) -> Result { - buf.extend(&(self.len() as i32).to_be_bytes()); + let len = value_size_int4_checked(self.len())?; + + buf.extend(len.to_be_bytes()); buf.extend(self.to_bytes()); Ok(IsNull::No)