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