pub const PAM_SUCCESS: u32 = 0;
pub const PAM_OPEN_ERR: u32 = 1;
pub const PAM_SYMBOL_ERR: u32 = 2;
pub const PAM_SERVICE_ERR: u32 = 3;
pub const PAM_SYSTEM_ERR: u32 = 4;
pub const PAM_BUF_ERR: u32 = 5;
pub const PAM_PERM_DENIED: u32 = 6;
pub const PAM_AUTH_ERR: u32 = 7;
pub const PAM_CRED_INSUFFICIENT: u32 = 8;
pub const PAM_AUTHINFO_UNAVAIL: u32 = 9;
pub const PAM_USER_UNKNOWN: u32 = 10;
pub const PAM_MAXTRIES: u32 = 11;
pub const PAM_NEW_AUTHTOK_REQD: u32 = 12;
pub const PAM_ACCT_EXPIRED: u32 = 13;
pub const PAM_SESSION_ERR: u32 = 14;
pub const PAM_CRED_UNAVAIL: u32 = 15;
pub const PAM_CRED_EXPIRED: u32 = 16;
pub const PAM_CRED_ERR: u32 = 17;
pub const PAM_NO_MODULE_DATA: u32 = 18;
pub const PAM_CONV_ERR: u32 = 19;
pub const PAM_AUTHTOK_ERR: u32 = 20;
pub const PAM_AUTHTOK_RECOVERY_ERR: u32 = 21;
pub const PAM_AUTHTOK_LOCK_BUSY: u32 = 22;
pub const PAM_AUTHTOK_DISABLE_AGING: u32 = 23;
pub const PAM_TRY_AGAIN: u32 = 24;
pub const PAM_IGNORE: u32 = 25;
pub const PAM_ABORT: u32 = 26;
pub const PAM_AUTHTOK_EXPIRED: u32 = 27;
pub const PAM_MODULE_UNKNOWN: u32 = 28;
pub const PAM_BAD_ITEM: u32 = 29;
pub const PAM_CONV_AGAIN: u32 = 30;
pub const PAM_INCOMPLETE: u32 = 31;
pub const PAM_SILENT: u32 = 32768;
pub const PAM_DISALLOW_NULL_AUTHTOK: u32 = 1;
pub const PAM_ESTABLISH_CRED: u32 = 2;
pub const PAM_DELETE_CRED: u32 = 4;
pub const PAM_REINITIALIZE_CRED: u32 = 8;
pub const PAM_REFRESH_CRED: u32 = 16;
pub const PAM_CHANGE_EXPIRED_AUTHTOK: u32 = 32;
pub const PAM_SERVICE: u32 = 1;
pub const PAM_USER: u32 = 2;
pub const PAM_TTY: u32 = 3;
pub const PAM_RHOST: u32 = 4;
pub const PAM_CONV: u32 = 5;
pub const PAM_AUTHTOK: u32 = 6;
pub const PAM_OLDAUTHTOK: u32 = 7;
pub const PAM_RUSER: u32 = 8;
pub const PAM_USER_PROMPT: u32 = 9;
pub const PAM_FAIL_DELAY: u32 = 10;
pub const PAM_XDISPLAY: u32 = 11;
pub const PAM_XAUTHDATA: u32 = 12;
pub const PAM_AUTHTOK_TYPE: u32 = 13;
pub const PAM_DATA_SILENT: u32 = 1073741824;
pub const PAM_PROMPT_ECHO_OFF: u32 = 1;
pub const PAM_PROMPT_ECHO_ON: u32 = 2;
pub const PAM_ERROR_MSG: u32 = 3;
pub const PAM_TEXT_INFO: u32 = 4;
pub const PAM_RADIO_TYPE: u32 = 5;
pub const PAM_BINARY_PROMPT: u32 = 7;
pub const PAM_MAX_NUM_MSG: u32 = 32;
pub const PAM_MAX_MSG_SIZE: u32 = 512;
pub const PAM_MAX_RESP_SIZE: u32 = 512;
pub const PAM_AUTHTOK_RECOVER_ERR: u32 = 21;
pub const PAM_BP_MAX_LENGTH: u32 = 131072;
pub const PAM_BPC_FALSE: u32 = 0;
pub const PAM_BPC_TRUE: u32 = 1;
pub const PAM_BPC_OK: u32 = 1;
pub const PAM_BPC_SELECT: u32 = 2;
pub const PAM_BPC_DONE: u32 = 3;
pub const PAM_BPC_FAIL: u32 = 4;
pub const PAM_BPC_GETENV: u32 = 65;
pub const PAM_BPC_PUTENV: u32 = 66;
pub const PAM_BPC_TEXT: u32 = 67;
pub const PAM_BPC_ERROR: u32 = 68;
pub const PAM_BPC_PROMPT: u32 = 69;
pub const PAM_BPC_PASS: u32 = 70;
pub const PAM_PRELIM_CHECK: u32 = 16384;
pub const PAM_UPDATE_AUTHTOK: u32 = 8192;
pub const PAM_DATA_REPLACE: u32 = 536870912;
pub const PAM_MODUTIL_NGROUPS: u32 = 64;
pub type pam_handle_t = u8;
extern "C" {
pub fn pam_set_item(
pamh: *mut pam_handle_t,
item_type: libc::c_int,
item: *const libc::c_void,
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_item(
pamh: *const pam_handle_t,
item_type: libc::c_int,
item: *mut *const libc::c_void,
) -> libc::c_int;
}
extern "C" {
pub fn pam_strerror(pamh: *mut pam_handle_t, errnum: libc::c_int) -> *const libc::c_char;
}
extern "C" {
pub fn pam_putenv(pamh: *mut pam_handle_t, name_value: *const libc::c_char) -> libc::c_int;
}
extern "C" {
pub fn pam_getenv(pamh: *mut pam_handle_t, name: *const libc::c_char) -> *const libc::c_char;
}
extern "C" {
pub fn pam_getenvlist(pamh: *mut pam_handle_t) -> *mut *mut libc::c_char;
}
extern "C" {
pub fn pam_fail_delay(pamh: *mut pam_handle_t, musec_delay: libc::c_uint) -> libc::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pam_message {
pub msg_style: libc::c_int,
pub msg: *const libc::c_char,
}
#[test]
fn bindgen_test_layout_pam_message() {
const UNINIT: ::std::mem::MaybeUninit<pam_message> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pam_message>(),
16usize,
concat!("Size of: ", stringify!(pam_message))
);
assert_eq!(
::std::mem::align_of::<pam_message>(),
8usize,
concat!("Alignment of ", stringify!(pam_message))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).msg_style) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pam_message),
"::",
stringify!(msg_style)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).msg) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pam_message),
"::",
stringify!(msg)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pam_response {
pub resp: *mut libc::c_char,
pub resp_retcode: libc::c_int,
}
#[test]
fn bindgen_test_layout_pam_response() {
const UNINIT: ::std::mem::MaybeUninit<pam_response> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pam_response>(),
16usize,
concat!("Size of: ", stringify!(pam_response))
);
assert_eq!(
::std::mem::align_of::<pam_response>(),
8usize,
concat!("Alignment of ", stringify!(pam_response))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).resp) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pam_response),
"::",
stringify!(resp)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).resp_retcode) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pam_response),
"::",
stringify!(resp_retcode)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pam_conv {
pub conv: ::std::option::Option<
unsafe extern "C" fn(
num_msg: libc::c_int,
msg: *mut *const pam_message,
resp: *mut *mut pam_response,
appdata_ptr: *mut libc::c_void,
) -> libc::c_int,
>,
pub appdata_ptr: *mut libc::c_void,
}
#[test]
fn bindgen_test_layout_pam_conv() {
const UNINIT: ::std::mem::MaybeUninit<pam_conv> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pam_conv>(),
16usize,
concat!("Size of: ", stringify!(pam_conv))
);
assert_eq!(
::std::mem::align_of::<pam_conv>(),
8usize,
concat!("Alignment of ", stringify!(pam_conv))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).conv) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pam_conv),
"::",
stringify!(conv)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).appdata_ptr) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pam_conv),
"::",
stringify!(appdata_ptr)
)
);
}
extern "C" {
pub fn pam_start(
service_name: *const libc::c_char,
user: *const libc::c_char,
pam_conversation: *const pam_conv,
pamh: *mut *mut pam_handle_t,
) -> libc::c_int;
}
extern "C" {
pub fn pam_start_confdir(
service_name: *const libc::c_char,
user: *const libc::c_char,
pam_conversation: *const pam_conv,
confdir: *const libc::c_char,
pamh: *mut *mut pam_handle_t,
) -> libc::c_int;
}
extern "C" {
pub fn pam_end(pamh: *mut pam_handle_t, pam_status: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_authenticate(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_setcred(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_acct_mgmt(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_open_session(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_close_session(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
extern "C" {
pub fn pam_chauthtok(pamh: *mut pam_handle_t, flags: libc::c_int) -> libc::c_int;
}
pub type __uid_t = libc::c_uint;
pub type __gid_t = libc::c_uint;
pub type gid_t = __gid_t;
pub type uid_t = __uid_t;
pub type va_list = __builtin_va_list;
extern "C" {
pub fn pam_vsyslog(
pamh: *const pam_handle_t,
priority: libc::c_int,
fmt: *const libc::c_char,
args: *mut __va_list_tag,
);
}
extern "C" {
pub fn pam_syslog(
pamh: *const pam_handle_t,
priority: libc::c_int,
fmt: *const libc::c_char,
...
);
}
extern "C" {
pub fn pam_vprompt(
pamh: *mut pam_handle_t,
style: libc::c_int,
response: *mut *mut libc::c_char,
fmt: *const libc::c_char,
args: *mut __va_list_tag,
) -> libc::c_int;
}
extern "C" {
pub fn pam_prompt(
pamh: *mut pam_handle_t,
style: libc::c_int,
response: *mut *mut libc::c_char,
fmt: *const libc::c_char,
...
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_authtok(
pamh: *mut pam_handle_t,
item: libc::c_int,
authtok: *mut *const libc::c_char,
prompt: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_authtok_noverify(
pamh: *mut pam_handle_t,
authtok: *mut *const libc::c_char,
prompt: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_authtok_verify(
pamh: *mut pam_handle_t,
authtok: *mut *const libc::c_char,
prompt: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_misc_paste_env(
pamh: *mut pam_handle_t,
user_env: *const *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_misc_drop_env(env: *mut *mut libc::c_char) -> *mut *mut libc::c_char;
}
extern "C" {
pub fn pam_misc_setenv(
pamh: *mut pam_handle_t,
name: *const libc::c_char,
value: *const libc::c_char,
readonly: libc::c_int,
) -> libc::c_int;
}
extern "C" {
pub fn pam_set_data(
pamh: *mut pam_handle_t,
module_data_name: *const libc::c_char,
data: *mut libc::c_void,
cleanup: ::std::option::Option<
unsafe extern "C" fn(
pamh: *mut pam_handle_t,
data: *mut libc::c_void,
error_status: libc::c_int,
),
>,
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_data(
pamh: *const pam_handle_t,
module_data_name: *const libc::c_char,
data: *mut *const libc::c_void,
) -> libc::c_int;
}
extern "C" {
pub fn pam_get_user(
pamh: *mut pam_handle_t,
user: *mut *const libc::c_char,
prompt: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_authenticate(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_setcred(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_acct_mgmt(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_open_session(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_close_session(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_sm_chauthtok(
pamh: *mut pam_handle_t,
flags: libc::c_int,
argc: libc::c_int,
argv: *mut *const libc::c_char,
) -> libc::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct passwd {
pub pw_name: *mut libc::c_char,
pub pw_passwd: *mut libc::c_char,
pub pw_uid: __uid_t,
pub pw_gid: __gid_t,
pub pw_gecos: *mut libc::c_char,
pub pw_dir: *mut libc::c_char,
pub pw_shell: *mut libc::c_char,
}
#[test]
fn bindgen_test_layout_passwd() {
const UNINIT: ::std::mem::MaybeUninit<passwd> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<passwd>(),
48usize,
concat!("Size of: ", stringify!(passwd))
);
assert_eq!(
::std::mem::align_of::<passwd>(),
8usize,
concat!("Alignment of ", stringify!(passwd))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_name) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_name)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_passwd) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_passwd)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_uid) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_uid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_gid) as usize - ptr as usize },
20usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_gid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_gecos) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_gecos)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_dir) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_dir)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pw_shell) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(passwd),
"::",
stringify!(pw_shell)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct group {
pub gr_name: *mut libc::c_char,
pub gr_passwd: *mut libc::c_char,
pub gr_gid: __gid_t,
pub gr_mem: *mut *mut libc::c_char,
}
#[test]
fn bindgen_test_layout_group() {
const UNINIT: ::std::mem::MaybeUninit<group> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<group>(),
32usize,
concat!("Size of: ", stringify!(group))
);
assert_eq!(
::std::mem::align_of::<group>(),
8usize,
concat!("Alignment of ", stringify!(group))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).gr_name) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(group),
"::",
stringify!(gr_name)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).gr_passwd) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(group),
"::",
stringify!(gr_passwd)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).gr_gid) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(group),
"::",
stringify!(gr_gid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).gr_mem) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(group),
"::",
stringify!(gr_mem)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct spwd {
pub sp_namp: *mut libc::c_char,
pub sp_pwdp: *mut libc::c_char,
pub sp_lstchg: libc::c_long,
pub sp_min: libc::c_long,
pub sp_max: libc::c_long,
pub sp_warn: libc::c_long,
pub sp_inact: libc::c_long,
pub sp_expire: libc::c_long,
pub sp_flag: libc::c_ulong,
}
#[test]
fn bindgen_test_layout_spwd() {
const UNINIT: ::std::mem::MaybeUninit<spwd> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<spwd>(),
72usize,
concat!("Size of: ", stringify!(spwd))
);
assert_eq!(
::std::mem::align_of::<spwd>(),
8usize,
concat!("Alignment of ", stringify!(spwd))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_namp) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_namp)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_pwdp) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_pwdp)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_lstchg) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_lstchg)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_min) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_min)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_max) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_max)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_warn) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_warn)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_inact) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_inact)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_expire) as usize - ptr as usize },
56usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_expire)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sp_flag) as usize - ptr as usize },
64usize,
concat!(
"Offset of field: ",
stringify!(spwd),
"::",
stringify!(sp_flag)
)
);
}
extern "C" {
pub fn pam_modutil_getpwnam(pamh: *mut pam_handle_t, user: *const libc::c_char) -> *mut passwd;
}
extern "C" {
pub fn pam_modutil_getpwuid(pamh: *mut pam_handle_t, uid: uid_t) -> *mut passwd;
}
extern "C" {
pub fn pam_modutil_getgrnam(pamh: *mut pam_handle_t, group: *const libc::c_char) -> *mut group;
}
extern "C" {
pub fn pam_modutil_getgrgid(pamh: *mut pam_handle_t, gid: gid_t) -> *mut group;
}
extern "C" {
pub fn pam_modutil_getspnam(pamh: *mut pam_handle_t, user: *const libc::c_char) -> *mut spwd;
}
extern "C" {
pub fn pam_modutil_user_in_group_nam_nam(
pamh: *mut pam_handle_t,
user: *const libc::c_char,
group: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_user_in_group_nam_gid(
pamh: *mut pam_handle_t,
user: *const libc::c_char,
group: gid_t,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_user_in_group_uid_nam(
pamh: *mut pam_handle_t,
user: uid_t,
group: *const libc::c_char,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_user_in_group_uid_gid(
pamh: *mut pam_handle_t,
user: uid_t,
group: gid_t,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_getlogin(pamh: *mut pam_handle_t) -> *const libc::c_char;
}
extern "C" {
pub fn pam_modutil_read(
fd: libc::c_int,
buffer: *mut libc::c_char,
count: libc::c_int,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_write(
fd: libc::c_int,
buffer: *const libc::c_char,
count: libc::c_int,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_audit_write(
pamh: *mut pam_handle_t,
type_: libc::c_int,
message: *const libc::c_char,
retval: libc::c_int,
) -> libc::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pam_modutil_privs {
pub grplist: *mut gid_t,
pub number_of_groups: libc::c_int,
pub allocated: libc::c_int,
pub old_gid: gid_t,
pub old_uid: uid_t,
pub is_dropped: libc::c_int,
}
#[test]
fn bindgen_test_layout_pam_modutil_privs() {
const UNINIT: ::std::mem::MaybeUninit<pam_modutil_privs> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pam_modutil_privs>(),
32usize,
concat!("Size of: ", stringify!(pam_modutil_privs))
);
assert_eq!(
::std::mem::align_of::<pam_modutil_privs>(),
8usize,
concat!("Alignment of ", stringify!(pam_modutil_privs))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).grplist) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(grplist)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).number_of_groups) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(number_of_groups)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).allocated) as usize - ptr as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(allocated)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).old_gid) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(old_gid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).old_uid) as usize - ptr as usize },
20usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(old_uid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).is_dropped) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pam_modutil_privs),
"::",
stringify!(is_dropped)
)
);
}
extern "C" {
pub fn pam_modutil_drop_priv(
pamh: *mut pam_handle_t,
p: *mut pam_modutil_privs,
pw: *const passwd,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_regain_priv(
pamh: *mut pam_handle_t,
p: *mut pam_modutil_privs,
) -> libc::c_int;
}
pub const pam_modutil_redirect_fd_PAM_MODUTIL_IGNORE_FD: pam_modutil_redirect_fd = 0;
pub const pam_modutil_redirect_fd_PAM_MODUTIL_PIPE_FD: pam_modutil_redirect_fd = 1;
pub const pam_modutil_redirect_fd_PAM_MODUTIL_NULL_FD: pam_modutil_redirect_fd = 2;
pub type pam_modutil_redirect_fd = libc::c_uint;
extern "C" {
pub fn pam_modutil_sanitize_helper_fds(
pamh: *mut pam_handle_t,
redirect_stdin: pam_modutil_redirect_fd,
redirect_stdout: pam_modutil_redirect_fd,
redirect_stderr: pam_modutil_redirect_fd,
) -> libc::c_int;
}
extern "C" {
pub fn pam_modutil_search_key(
pamh: *mut pam_handle_t,
file_name: *const libc::c_char,
key: *const libc::c_char,
) -> *mut libc::c_char;
}
pub type __builtin_va_list = [__va_list_tag; 1usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __va_list_tag {
pub gp_offset: libc::c_uint,
pub fp_offset: libc::c_uint,
pub overflow_arg_area: *mut libc::c_void,
pub reg_save_area: *mut libc::c_void,
}
#[test]
fn bindgen_test_layout___va_list_tag() {
const UNINIT: ::std::mem::MaybeUninit<__va_list_tag> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<__va_list_tag>(),
24usize,
concat!("Size of: ", stringify!(__va_list_tag))
);
assert_eq!(
::std::mem::align_of::<__va_list_tag>(),
8usize,
concat!("Alignment of ", stringify!(__va_list_tag))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).gp_offset) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(__va_list_tag),
"::",
stringify!(gp_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).fp_offset) as usize - ptr as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(__va_list_tag),
"::",
stringify!(fp_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).overflow_arg_area) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(__va_list_tag),
"::",
stringify!(overflow_arg_area)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).reg_save_area) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(__va_list_tag),
"::",
stringify!(reg_save_area)
)
);
}