We already have PAM_USER, PAM_RUSER and PAM_RHOST. Add PAM_HOST for
the sake of completeness. It is automatically set in pam_start(3). git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@443 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
parent
3f2d2b26cd
commit
6970f8c093
|
@ -126,6 +126,7 @@ enum {
|
||||||
PAM_REPOSITORY = 10,
|
PAM_REPOSITORY = 10,
|
||||||
PAM_AUTHTOK_PROMPT = 11, /* OpenPAM extension */
|
PAM_AUTHTOK_PROMPT = 11, /* OpenPAM extension */
|
||||||
PAM_OLDAUTHTOK_PROMPT = 12, /* OpenPAM extension */
|
PAM_OLDAUTHTOK_PROMPT = 12, /* OpenPAM extension */
|
||||||
|
PAM_HOST = 13, /* OpenPAM extension */
|
||||||
PAM_NUM_ITEMS /* OpenPAM extension */
|
PAM_NUM_ITEMS /* OpenPAM extension */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,8 @@ const char *_pam_item_name[PAM_NUM_ITEMS] = {
|
||||||
"PAM_USER_PROMPT",
|
"PAM_USER_PROMPT",
|
||||||
"PAM_REPOSITORY",
|
"PAM_REPOSITORY",
|
||||||
"PAM_AUTHTOK_PROMPT",
|
"PAM_AUTHTOK_PROMPT",
|
||||||
"PAM_OLDAUTHTOK_PROMPT"
|
"PAM_OLDAUTHTOK_PROMPT",
|
||||||
|
"PAM_HOST",
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -87,9 +88,10 @@ pam_get_item(const pam_handle_t *pamh,
|
||||||
case PAM_RUSER:
|
case PAM_RUSER:
|
||||||
case PAM_CONV:
|
case PAM_CONV:
|
||||||
case PAM_USER_PROMPT:
|
case PAM_USER_PROMPT:
|
||||||
|
case PAM_REPOSITORY:
|
||||||
case PAM_AUTHTOK_PROMPT:
|
case PAM_AUTHTOK_PROMPT:
|
||||||
case PAM_OLDAUTHTOK_PROMPT:
|
case PAM_OLDAUTHTOK_PROMPT:
|
||||||
case PAM_REPOSITORY:
|
case PAM_HOST:
|
||||||
*item = pamh->item[item_type];
|
*item = pamh->item[item_type];
|
||||||
RETURNC(PAM_SUCCESS);
|
RETURNC(PAM_SUCCESS);
|
||||||
default:
|
default:
|
||||||
|
@ -139,6 +141,8 @@ pam_get_item(const pam_handle_t *pamh,
|
||||||
* =PAM_OLDAUTHTOK_PROMPT:
|
* =PAM_OLDAUTHTOK_PROMPT:
|
||||||
* The prompt to use when asking the applicant for an
|
* The prompt to use when asking the applicant for an
|
||||||
* expired authentication token prior to changing it.
|
* expired authentication token prior to changing it.
|
||||||
|
* =PAM_HOST:
|
||||||
|
* The name of the host the application runs on.
|
||||||
*
|
*
|
||||||
* See =pam_start for a description of =struct pam_conv.
|
* See =pam_start for a description of =struct pam_conv.
|
||||||
*
|
*
|
||||||
|
|
|
@ -79,6 +79,7 @@ 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:
|
||||||
|
case PAM_HOST:
|
||||||
if (*slot != NULL)
|
if (*slot != NULL)
|
||||||
osize = strlen(*slot) + 1;
|
osize = strlen(*slot) + 1;
|
||||||
if (item != NULL)
|
if (item != NULL)
|
||||||
|
|
|
@ -40,11 +40,19 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
|
|
||||||
#include "openpam_impl.h"
|
#include "openpam_impl.h"
|
||||||
|
|
||||||
|
#ifdef _SC_HOST_NAME_MAX
|
||||||
|
#define HOST_NAME_MAX sysconf(_SC_HOST_NAME_MAX)
|
||||||
|
#else
|
||||||
|
#define HOST_NAME_MAX 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XSSO 4.2.1
|
* XSSO 4.2.1
|
||||||
* XSSO 6 page 89
|
* XSSO 6 page 89
|
||||||
|
@ -58,6 +66,7 @@ pam_start(const char *service,
|
||||||
const struct pam_conv *pam_conv,
|
const struct pam_conv *pam_conv,
|
||||||
pam_handle_t **pamh)
|
pam_handle_t **pamh)
|
||||||
{
|
{
|
||||||
|
char hostname[HOST_NAME_MAX + 1];
|
||||||
struct pam_handle *ph;
|
struct pam_handle *ph;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
@ -66,6 +75,10 @@ pam_start(const char *service,
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
if ((r = pam_set_item(ph, PAM_SERVICE, service)) != PAM_SUCCESS)
|
if ((r = pam_set_item(ph, PAM_SERVICE, service)) != PAM_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
if (gethostname(hostname, sizeof hostname) != 0)
|
||||||
|
strlcpy(hostname, "localhost", sizeof hostname);
|
||||||
|
if ((r = pam_set_item(ph, PAM_HOST, hostname)) != PAM_SUCCESS)
|
||||||
|
goto fail;
|
||||||
if ((r = pam_set_item(ph, PAM_USER, user)) != PAM_SUCCESS)
|
if ((r = pam_set_item(ph, PAM_USER, user)) != PAM_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
if ((r = pam_set_item(ph, PAM_CONV, pam_conv)) != PAM_SUCCESS)
|
if ((r = pam_set_item(ph, PAM_CONV, pam_conv)) != PAM_SUCCESS)
|
||||||
|
|
Loading…
Reference in New Issue