Add the PAM_REPOSITORY item (from Solaris 9).

Sponsored by:	DARPA, NAI Labs


git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@164 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
Dag-Erling Smørgrav 2002-06-30 23:11:38 +00:00
parent bfd6af11ec
commit 913c1aaf47
3 changed files with 21 additions and 16 deletions

View File

@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $P4: //depot/projects/openpam/include/security/pam_constants.h#16 $ * $P4: //depot/projects/openpam/include/security/pam_constants.h#17 $
*/ */
#ifndef _PAM_CONSTANTS_H_INCLUDED #ifndef _PAM_CONSTANTS_H_INCLUDED
@ -122,6 +122,7 @@ enum {
PAM_USER_PROMPT = 9, PAM_USER_PROMPT = 9,
PAM_AUTHTOK_PROMPT = 10, /* OpenPAM extension */ PAM_AUTHTOK_PROMPT = 10, /* OpenPAM extension */
PAM_OLDAUTHTOK_PROMPT = 11, /* OpenPAM extension */ PAM_OLDAUTHTOK_PROMPT = 11, /* OpenPAM extension */
PAM_REPOSITORY = 12,
PAM_NUM_ITEMS /* OpenPAM extension */ PAM_NUM_ITEMS /* OpenPAM extension */
}; };

View File

@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $P4: //depot/projects/openpam/lib/pam_get_item.c#12 $ * $P4: //depot/projects/openpam/lib/pam_get_item.c#13 $
*/ */
#include <sys/param.h> #include <sys/param.h>
@ -67,6 +67,7 @@ pam_get_item(pam_handle_t *pamh,
case PAM_USER_PROMPT: case PAM_USER_PROMPT:
case PAM_AUTHTOK_PROMPT: case PAM_AUTHTOK_PROMPT:
case PAM_OLDAUTHTOK_PROMPT: case PAM_OLDAUTHTOK_PROMPT:
case PAM_REPOSITORY:
*item = pamh->item[item_type]; *item = pamh->item[item_type];
return (PAM_SUCCESS); return (PAM_SUCCESS);
default: default:

View File

@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $P4: //depot/projects/openpam/lib/pam_set_item.c#14 $ * $P4: //depot/projects/openpam/lib/pam_set_item.c#15 $
*/ */
#include <sys/param.h> #include <sys/param.h>
@ -56,13 +56,12 @@ pam_set_item(pam_handle_t *pamh,
const void *item) const void *item)
{ {
void **slot, *tmp; void **slot, *tmp;
size_t size; size_t nsize, osize;
if (pamh == NULL) if (pamh == NULL)
return (PAM_SYSTEM_ERR); return (PAM_SYSTEM_ERR);
slot = &pamh->item[item_type]; slot = &pamh->item[item_type];
tmp = NULL;
switch (item_type) { switch (item_type) {
case PAM_SERVICE: case PAM_SERVICE:
case PAM_USER: case PAM_USER:
@ -74,27 +73,31 @@ pam_set_item(pam_handle_t *pamh,
case PAM_USER_PROMPT: case PAM_USER_PROMPT:
case PAM_AUTHTOK_PROMPT: case PAM_AUTHTOK_PROMPT:
case PAM_OLDAUTHTOK_PROMPT: case PAM_OLDAUTHTOK_PROMPT:
if (*slot != NULL)
size = strlen(*slot) + 1;
if (item != NULL) if (item != NULL)
if ((tmp = strdup(item)) == NULL) nsize = strlen(item) + 1;
return (PAM_BUF_ERR); if (*slot != NULL)
osize = strlen(*slot) + 1;
break;
case PAM_REPOSITORY:
osize = nsize = sizeof(struct pam_repository);
break; break;
case PAM_CONV: case PAM_CONV:
size = sizeof(struct pam_conv); osize = nsize = sizeof(struct pam_conv);
if (item != NULL) {
if ((tmp = malloc(size)) == NULL)
return (PAM_BUF_ERR);
memcpy(tmp, item, sizeof(struct pam_conv));
}
break; break;
default: default:
return (PAM_SYMBOL_ERR); return (PAM_SYMBOL_ERR);
} }
if (*slot != NULL) { if (*slot != NULL) {
memset(*slot, 0xd0, size); memset(*slot, 0xd0, osize);
free(*slot); free(*slot);
} }
if (item != NULL) {
if ((tmp = malloc(nsize)) == NULL)
return (PAM_BUF_ERR);
memcpy(tmp, item, nsize);
} else {
tmp = NULL;
}
*slot = tmp; *slot = tmp;
return (PAM_SUCCESS); return (PAM_SUCCESS);
} }