diff options
Diffstat (limited to 'libpam/pam_handlers.c')
-rw-r--r-- | libpam/pam_handlers.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c index a22d66f6..b2065999 100644 --- a/libpam/pam_handlers.c +++ b/libpam/pam_handlers.c @@ -756,6 +756,8 @@ int _pam_add_handler(pam_handle_t *pamh (*handler_p)->must_fail = must_fail; /* failure forced? */ (*handler_p)->func = func; memcpy((*handler_p)->actions,actions,sizeof((*handler_p)->actions)); + (*handler_p)->cached_retval = -1; /* error */ + (*handler_p)->cached_retval_p = &((*handler_p)->cached_retval); (*handler_p)->argc = argc; (*handler_p)->argv = argv; /* not a copy */ (*handler_p)->next = NULL; @@ -775,6 +777,9 @@ int _pam_add_handler(pam_handle_t *pamh (*handler_p2)->must_fail = must_fail; /* failure forced? */ (*handler_p2)->func = func2; memcpy((*handler_p2)->actions,actions,sizeof((*handler_p2)->actions)); + (*handler_p2)->cached_retval = -1; /* ignored */ + /* Note, this next entry points to the handler_p value! */ + (*handler_p2)->cached_retval_p = &((*handler_p)->cached_retval); (*handler_p2)->argc = argc; if (argv) { if (((*handler_p2)->argv = malloc(argvlen)) == NULL) { |