193787Sdes/* 293787Sdes * These macros are partially based on Linux-PAM's <security/_pam_macros.h>, 393787Sdes * which were organized by Cristian Gafton and I believe are in the public 493787Sdes * domain. 593787Sdes */ 693787Sdes 793787Sdes#if !defined(_PAM_MACROS_H) && !defined(_pam_overwrite) 893787Sdes#define _PAM_MACROS_H 993787Sdes 1093787Sdes#include <string.h> 1193787Sdes#include <stdlib.h> 1293787Sdes 1393787Sdes#define _pam_overwrite(x) \ 1493787Sdes memset((x), 0, strlen((x))) 1593787Sdes 1693787Sdes#define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \ 1793787Sdesdo { \ 1893787Sdes int i; \ 1993787Sdes\ 2093787Sdes for (i = 0; i < (replies); i++) \ 2193787Sdes if ((reply)[i].resp) { \ 2293787Sdes _pam_overwrite((reply)[i].resp); \ 2393787Sdes free((reply)[i].resp); \ 2493787Sdes } \ 2593787Sdes if ((reply)) free((reply)); \ 2693787Sdes} while (0) 2793787Sdes 2893787Sdes#endif 29