diff options
Diffstat (limited to 'src/load_extension_guard.rs')
-rw-r--r-- | src/load_extension_guard.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/load_extension_guard.rs b/src/load_extension_guard.rs index b4c38c2..deed3b4 100644 --- a/src/load_extension_guard.rs +++ b/src/load_extension_guard.rs @@ -1,7 +1,6 @@ use crate::{Connection, Result}; -/// `feature = "load_extension"` RAII guard temporarily enabling SQLite -/// extensions to be loaded. +/// RAII guard temporarily enabling SQLite extensions to be loaded. /// /// ## Example /// @@ -9,11 +8,13 @@ use crate::{Connection, Result}; /// # use rusqlite::{Connection, Result, LoadExtensionGuard}; /// # use std::path::{Path}; /// fn load_my_extension(conn: &Connection) -> Result<()> { -/// let _guard = LoadExtensionGuard::new(conn)?; -/// -/// conn.load_extension(Path::new("my_sqlite_extension"), None) +/// unsafe { +/// let _guard = LoadExtensionGuard::new(conn)?; +/// conn.load_extension("trusted/sqlite/extension", None) +/// } /// } /// ``` +#[cfg_attr(docsrs, doc(cfg(feature = "load_extension")))] pub struct LoadExtensionGuard<'conn> { conn: &'conn Connection, } @@ -22,8 +23,15 @@ impl LoadExtensionGuard<'_> { /// Attempt to enable loading extensions. Loading extensions will be /// disabled when this guard goes out of scope. Cannot be meaningfully /// nested. + /// + /// # Safety + /// + /// You must not run untrusted queries while extension loading is enabled. + /// + /// See the safety comment on [`Connection::load_extension_enable`] for more + /// details. #[inline] - pub fn new(conn: &Connection) -> Result<LoadExtensionGuard<'_>> { + pub unsafe fn new(conn: &Connection) -> Result<LoadExtensionGuard<'_>> { conn.load_extension_enable() .map(|_| LoadExtensionGuard { conn }) } |