comparison libpam-sys/libpam-sys-test/build.rs @ 139:33b9622ed6d2

Remove redundant memory management in nonstick::libpam; fix UB. - Uses the libpam-sys-helpers BinaryPayload / OwnedBinaryPayload structs to handle memory management and parsing for Linux-PAM binary messages. - Gets rid of the (technically) undefined behavior in PtrPtrVec due to pointer provenance. - Don't check for malloc failing. It won't, even if it does. - Formatting/cleanups/etc.
author Paul Fisher <paul@pfish.zone>
date Thu, 03 Jul 2025 23:57:49 -0400
parents 999bf07efbcb
children 4b3a5095f68c
comparison
equal deleted inserted replaced
138:999bf07efbcb 139:33b9622ed6d2
26 ignore_consts: vec![ 26 ignore_consts: vec![
27 "__LINUX_PAM__", 27 "__LINUX_PAM__",
28 "__LINUX_PAM_MINOR__", 28 "__LINUX_PAM_MINOR__",
29 "PAM_AUTHTOK_RECOVER_ERR", 29 "PAM_AUTHTOK_RECOVER_ERR",
30 ], 30 ],
31 ..Default::default()
32 }, 31 },
33 PamImpl::OpenPam => TestConfig { 32 PamImpl::OpenPam => TestConfig {
34 headers: vec![ 33 headers: vec![
35 "<security/pam_types.h>", 34 "<security/pam_types.h>",
36 "<security/openpam.h>", 35 "<security/openpam.h>",
93 }) 92 })
94 .filter(|&item| config.should_check_const(item)) 93 .filter(|&item| config.should_check_const(item))
95 .map(|item| { 94 .map(|item| {
96 let name = item.ident.to_string(); 95 let name = item.ident.to_string();
97 if let Some(stripped) = name.strip_prefix(&format!("{REDIR_FD}_")) { 96 if let Some(stripped) = name.strip_prefix(&format!("{REDIR_FD}_")) {
98 format!("assert_eq!(generated::{name} as i32, libpam_sys::{REDIR_FD}::{stripped}.into());"); 97 format!("\
99 format!("assert_eq!((generated::{name} as i32).try_into(), Ok(libpam_sys::{REDIR_FD}::{stripped}));") 98 assert_eq!(generated::{name} as i32, libpam_sys::{REDIR_FD}::{stripped}.into());\
99 assert_eq!((generated::{name} as i32).try_into(), Ok(libpam_sys::{REDIR_FD}::{stripped}));\
100 ")
100 } else { 101 } else {
101 format!("assert_eq!(generated::{name} as i32, libpam_sys::{name});") 102 format!("assert_eq!(generated::{name} as i32, libpam_sys::{name});")
102 } 103 }
103 }), 104 }),
104 ); 105 );