aboutsummaryrefslogtreecommitdiff
path: root/libpam/include/security/pam_modutil.h
diff options
context:
space:
mode:
authorSteve Langasek <steve.langasek@ubuntu.com>2019-01-03 21:06:54 -0800
committerSteve Langasek <vorlon@debian.org>2019-01-08 21:51:58 -0800
commit3a4dfe474b63e2133aa190862149646eca2e3bda (patch)
treeadd0a0f60e1fecb5b7383fc3edbbc16a91a48a7b /libpam/include/security/pam_modutil.h
parent25743de9cb930e134fa533a21ec29fd28c75f26c (diff)
parentf3c0273b7bd2d7fdcac3fe3604cedd82afc57f49 (diff)
downloadpam-3a4dfe474b63e2133aa190862149646eca2e3bda.tar.gz
pam-3a4dfe474b63e2133aa190862149646eca2e3bda.tar.bz2
pam-3a4dfe474b63e2133aa190862149646eca2e3bda.zip
merge upstream version 1.1.3
Diffstat (limited to 'libpam/include/security/pam_modutil.h')
-rw-r--r--libpam/include/security/pam_modutil.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/libpam/include/security/pam_modutil.h b/libpam/include/security/pam_modutil.h
index ffdf5ad0..317202de 100644
--- a/libpam/include/security/pam_modutil.h
+++ b/libpam/include/security/pam_modutil.h
@@ -100,6 +100,30 @@ pam_modutil_write(int fd, const char *buffer, int count);
extern int PAM_NONNULL((1,3))
pam_modutil_audit_write(pam_handle_t *pamh, int type,
const char *message, int retval);
+
+struct pam_modutil_privs {
+ gid_t *grplist;
+ int number_of_groups;
+ int allocated;
+ gid_t old_gid;
+ uid_t old_uid;
+ int is_dropped;
+};
+
+#define PAM_MODUTIL_NGROUPS 64
+#define PAM_MODUTIL_DEF_PRIVS(n) \
+ gid_t n##_grplist[PAM_MODUTIL_NGROUPS]; \
+ struct pam_modutil_privs n = { n##_grplist, PAM_MODUTIL_NGROUPS, 0, -1, -1, 0 }
+
+extern int PAM_NONNULL((1,2,3))
+pam_modutil_drop_priv(pam_handle_t *pamh,
+ struct pam_modutil_privs *p,
+ const struct passwd *pw);
+
+extern int PAM_NONNULL((1,2))
+pam_modutil_regain_priv(pam_handle_t *pamh,
+ struct pam_modutil_privs *p);
+
#ifdef __cplusplus
}
#endif