1238438Sdteske/*
2238438Sdteske * These macros are partially based on Linux-PAM's <security/_pam_macros.h>,
3238438Sdteske * which were organized by Cristian Gafton and I believe are in the public
4263980Sdteske * domain.
5238438Sdteske */
6238438Sdteske
7238438Sdteske#if !defined(_PAM_MACROS_H) && !defined(_pam_overwrite)
8238438Sdteske#define _PAM_MACROS_H
9238438Sdteske
10238438Sdteske#include <string.h>
11238438Sdteske#include <stdlib.h>
12238438Sdteske
13238438Sdteske#define _pam_overwrite(x) \
14238438Sdteske	memset((x), 0, strlen((x)))
15238438Sdteske
16238438Sdteske#define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \
17238438Sdteskedo { \
18238438Sdteske	int i; \
19238438Sdteske\
20238438Sdteske	for (i = 0; i < (replies); i++) \
21238438Sdteske	if ((reply)[i].resp) { \
22238438Sdteske		_pam_overwrite((reply)[i].resp); \
23238438Sdteske		free((reply)[i].resp); \
24238438Sdteske	} \
25238438Sdteske	if ((reply)) free((reply)); \
26238438Sdteske} while (0)
27238438Sdteske
28238438Sdteske#endif
29238438Sdteske