comparison src/libpam/items.rs @ 163:a75a66cb4181

Add end-to-end tests; fix issues found by tests. - Create tests and installer/remover shell script - Fix Pointer/pointee problems - Add Debug formatting - Misc cleanup
author Paul Fisher <paul@pfish.zone>
date Mon, 14 Jul 2025 17:40:11 -0400
parents 1bc52025156b
children a1bb1d013567
comparison
equal deleted inserted replaced
162:180237d0b498 163:a75a66cb4181
56 /// Gets a C string item. 56 /// Gets a C string item.
57 /// 57 ///
58 /// # Safety 58 /// # Safety
59 /// 59 ///
60 /// You better be requesting an item which is a C string. 60 /// You better be requesting an item which is a C string.
61 pub unsafe fn get_cstr_item( 61 pub unsafe fn get_cstr_item(hdl: &LibPamHandle, item_type: ItemType) -> Result<Option<OsString>> {
62 hdl: &LibPamHandle,
63 item_type: ItemType,
64 ) -> crate::Result<Option<OsString>> {
65 let mut output = ptr::null(); 62 let mut output = ptr::null();
66 let ret = unsafe { libpam_sys::pam_get_item(hdl.raw_ref(), item_type as c_int, &mut output) }; 63 let ret = unsafe { libpam_sys::pam_get_item(hdl.inner(), item_type as c_int, &mut output) };
67 ErrorCode::result_from(ret)?; 64 ErrorCode::result_from(ret)?;
68 Ok(memory::copy_pam_string(output.cast())) 65 Ok(memory::copy_pam_string(output.cast()))
69 } 66 }
70 67
71 /// Sets a C string item. 68 /// Sets a C string item.
75 /// You better be setting an item which is a C string. 72 /// You better be setting an item which is a C string.
76 pub unsafe fn set_cstr_item( 73 pub unsafe fn set_cstr_item(
77 hdl: &mut LibPamHandle, 74 hdl: &mut LibPamHandle,
78 item_type: ItemType, 75 item_type: ItemType,
79 data: Option<&OsStr>, 76 data: Option<&OsStr>,
80 ) -> crate::Result<()> { 77 ) -> Result<()> {
81 let data_str = memory::option_cstr_os(data); 78 let data_str = memory::option_cstr_os(data);
82 let ret = unsafe { 79 let ret = unsafe {
83 libpam_sys::pam_set_item( 80 libpam_sys::pam_set_item(
84 hdl.raw_mut(), 81 hdl.inner_mut(),
85 item_type as c_int, 82 item_type as c_int,
86 memory::prompt_ptr(data_str.as_deref()).cast(), 83 memory::prompt_ptr(data_str.as_deref()).cast(),
87 ) 84 )
88 }; 85 };
89 ErrorCode::result_from(ret) 86 ErrorCode::result_from(ret)