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:
parent
bfd6af11ec
commit
913c1aaf47
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue