1/*
2 * These macros are partially based on Linux-PAM's <security/_pam_macros.h>,
3 * which were organized by Cristian Gafton and I believe are in the public
4 * domain.
5 */
6
7#if !defined(_PAM_MACROS_H) && !defined(_pam_overwrite)
8#define _PAM_MACROS_H
9
10#include <string.h>
11#include <stdlib.h>
12
13#define _pam_overwrite(x) \
14	memset((x), 0, strlen((x)))
15
16#define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \
17do { \
18	int i; \
19\
20	for (i = 0; i < (replies); i++) \
21	if ((reply)[i].resp) { \
22		_pam_overwrite((reply)[i].resp); \
23		free((reply)[i].resp); \
24	} \
25	if ((reply)) free((reply)); \
26} while (0)
27
28#endif
29