comparison src/libpam/handle.rs @ 77:351bdc13005e

Update the libpam module to work with the new structure.
author Paul Fisher <paul@pfish.zone>
date Sun, 08 Jun 2025 01:03:46 -0400
parents c30811b4afae
children 002adfb98c5c
comparison
equal deleted inserted replaced
76:e58d24849e82 77:351bdc13005e
2 use crate::constants::{ErrorCode, InvalidEnum, Result}; 2 use crate::constants::{ErrorCode, InvalidEnum, Result};
3 use crate::conv::Message; 3 use crate::conv::Message;
4 use crate::handle::{PamApplicationOnly, PamModuleOnly, PamShared}; 4 use crate::handle::{PamApplicationOnly, PamModuleOnly, PamShared};
5 use crate::libpam::memory; 5 use crate::libpam::memory;
6 use crate::libpam::memory::Immovable; 6 use crate::libpam::memory::Immovable;
7 use crate::{Conversation, Response}; 7 use crate::Conversation;
8 use num_derive::FromPrimitive; 8 use num_derive::FromPrimitive;
9 use num_traits::FromPrimitive; 9 use num_traits::FromPrimitive;
10 use std::ffi::{c_char, c_int}; 10 use std::ffi::{c_char, c_int};
11 use std::ops::{Deref, DerefMut}; 11 use std::ops::{Deref, DerefMut};
12 use std::result::Result as StdResult; 12 use std::result::Result as StdResult;
142 cstr_item!(set = set_authtok_item, item = ItemType::AuthTok); 142 cstr_item!(set = set_authtok_item, item = ItemType::AuthTok);
143 cstr_item!(set = set_old_authtok_item, item = ItemType::OldAuthTok); 143 cstr_item!(set = set_old_authtok_item, item = ItemType::OldAuthTok);
144 } 144 }
145 145
146 impl Conversation for LibPamHandle { 146 impl Conversation for LibPamHandle {
147 fn communicate(&mut self, messages: &[Message]) -> Result<Vec<Response>> { 147 fn communicate(&mut self, messages: &[Message]) {
148 self.conversation_item()?.communicate(messages) 148 match self.conversation_item() {
149 Ok(conv) => conv.communicate(messages),
150 Err(e) => {
151 for msg in messages {
152 msg.set_error(e)
153 }
154 }
155 }
149 } 156 }
150 } 157 }
151 158
152 impl PamModuleOnly for LibPamHandle { 159 impl PamModuleOnly for LibPamHandle {
153 fn get_authtok(&mut self, prompt: Option<&str>) -> Result<&str> { 160 fn get_authtok(&mut self, prompt: Option<&str>) -> Result<&str> {