comparison src/libpam/module.rs @ 141:a508a69c068a

Remove a lot of Results from functions. Many functions are documented to only return failing Results when given improper inputs or when there is a memory allocation failure (which can be verified by looking at the source). In cases where we know our input is correct, we don't need to check for memory allocation errors for the same reason that Rust doesn't do so when you, e.g., create a new Vec.
author Paul Fisher <paul@pfish.zone>
date Sat, 05 Jul 2025 17:16:56 -0400
parents a2676475e86b
children ebb71a412b58
comparison
equal deleted inserted replaced
140:add7228adb2f 141:a508a69c068a
40 #[macro_export] 40 #[macro_export]
41 macro_rules! pam_hooks { 41 macro_rules! pam_hooks {
42 ($ident:ident) => { 42 ($ident:ident) => {
43 mod _pam_hooks_scope { 43 mod _pam_hooks_scope {
44 use std::ffi::{c_char, c_int, c_void, CStr}; 44 use std::ffi::{c_char, c_int, c_void, CStr};
45 use $crate::{ErrorCode, Flags, LibPamHandle, PamModule}; 45 use $crate::{ErrorCode, Flags, PamModule, RawPamHandle};
46 46
47 #[no_mangle] 47 #[no_mangle]
48 extern "C" fn pam_sm_acct_mgmt( 48 extern "C" fn pam_sm_acct_mgmt(
49 pamh: *mut c_void, 49 pamh: *mut c_void,
50 flags: Flags, 50 flags: Flags,
51 argc: c_int, 51 argc: c_int,
52 argv: *const *const c_char, 52 argv: *const *const c_char,
53 ) -> c_int { 53 ) -> c_int {
54 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 54 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
55 let args = extract_argv(argc, argv); 55 let args = extract_argv(argc, argv);
56 ErrorCode::result_to_c(super::$ident::account_management(handle, args, flags)) 56 ErrorCode::result_to_c(super::$ident::account_management(handle, args, flags))
57 } else { 57 } else {
58 ErrorCode::Ignore as c_int 58 ErrorCode::Ignore as c_int
59 } 59 }
64 pamh: *mut c_void, 64 pamh: *mut c_void,
65 flags: Flags, 65 flags: Flags,
66 argc: c_int, 66 argc: c_int,
67 argv: *const *const c_char, 67 argv: *const *const c_char,
68 ) -> c_int { 68 ) -> c_int {
69 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 69 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
70 let args = extract_argv(argc, argv); 70 let args = extract_argv(argc, argv);
71 ErrorCode::result_to_c(super::$ident::authenticate(handle, args, flags)) 71 ErrorCode::result_to_c(super::$ident::authenticate(handle, args, flags))
72 } else { 72 } else {
73 ErrorCode::Ignore as c_int 73 ErrorCode::Ignore as c_int
74 } 74 }
79 pamh: *mut c_void, 79 pamh: *mut c_void,
80 flags: Flags, 80 flags: Flags,
81 argc: c_int, 81 argc: c_int,
82 argv: *const *const c_char, 82 argv: *const *const c_char,
83 ) -> c_int { 83 ) -> c_int {
84 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 84 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
85 let args = extract_argv(argc, argv); 85 let args = extract_argv(argc, argv);
86 ErrorCode::result_to_c(super::$ident::change_authtok(handle, args, flags)) 86 ErrorCode::result_to_c(super::$ident::change_authtok(handle, args, flags))
87 } else { 87 } else {
88 ErrorCode::Ignore as c_int 88 ErrorCode::Ignore as c_int
89 } 89 }
94 pamh: *mut c_void, 94 pamh: *mut c_void,
95 flags: Flags, 95 flags: Flags,
96 argc: c_int, 96 argc: c_int,
97 argv: *const *const c_char, 97 argv: *const *const c_char,
98 ) -> c_int { 98 ) -> c_int {
99 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 99 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
100 let args = extract_argv(argc, argv); 100 let args = extract_argv(argc, argv);
101 ErrorCode::result_to_c(super::$ident::close_session(handle, args, flags)) 101 ErrorCode::result_to_c(super::$ident::close_session(handle, args, flags))
102 } else { 102 } else {
103 ErrorCode::Ignore as c_int 103 ErrorCode::Ignore as c_int
104 } 104 }
110 flags: Flags, 110 flags: Flags,
111 argc: c_int, 111 argc: c_int,
112 argv: *const *const c_char, 112 argv: *const *const c_char,
113 ) -> c_int { 113 ) -> c_int {
114 let args = extract_argv(argc, argv); 114 let args = extract_argv(argc, argv);
115 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 115 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
116 ErrorCode::result_to_c(super::$ident::open_session(handle, args, flags)) 116 ErrorCode::result_to_c(super::$ident::open_session(handle, args, flags))
117 } else { 117 } else {
118 ErrorCode::Ignore as c_int 118 ErrorCode::Ignore as c_int
119 } 119 }
120 } 120 }
125 flags: Flags, 125 flags: Flags,
126 argc: c_int, 126 argc: c_int,
127 argv: *const *const c_char, 127 argv: *const *const c_char,
128 ) -> c_int { 128 ) -> c_int {
129 let args = extract_argv(argc, argv); 129 let args = extract_argv(argc, argv);
130 if let Some(handle) = unsafe { pamh.cast::<LibPamHandle>().as_mut() } { 130 if let Some(handle) = unsafe { pamh.cast::<RawPamHandle>().as_mut() } {
131 ErrorCode::result_to_c(super::$ident::set_credentials(handle, args, flags)) 131 ErrorCode::result_to_c(super::$ident::set_credentials(handle, args, flags))
132 } else { 132 } else {
133 ErrorCode::Ignore as c_int 133 ErrorCode::Ignore as c_int
134 } 134 }
135 } 135 }