diff --git a/core/lib.rs b/core/lib.rs index e08cfa026..2e30e51f9 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -2060,6 +2060,11 @@ impl Connection { }; tracing::trace!("setting encryption ctx for connection"); let pager = self.pager.borrow(); + if pager.is_encryption_ctx_set() { + return Err(LimboError::InvalidArgument( + "cannot reset encryption attributes if already set in the session".to_string(), + )); + } pager.set_encryption_context(cipher_mode, key) } } diff --git a/core/storage/pager.rs b/core/storage/pager.rs index 13cb758a3..7e5cab991 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -2163,6 +2163,10 @@ impl Pager { Ok(IOResult::Done(f(header))) } + pub fn is_encryption_ctx_set(&self) -> bool { + self.io_ctx.borrow_mut().encryption_context().is_some() + } + pub fn set_encryption_context( &self, cipher_mode: CipherMode,