pamsrv_cmd.c revision 680ddbdf8478f26cbb5efc9b712ea35714e089ba
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa PAM Responder
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa Copyright (C) Simo Sorce <ssorce@redhat.com> 2009
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa Copyright (C) Sumit Bose <sbose@redhat.com> 2009
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa This program is free software; you can redistribute it and/or modify
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa it under the terms of the GNU General Public License as published by
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa the Free Software Foundation; either version 3 of the License, or
c8340d34f91f22f5249c174f951bab73547bf53cEugen Kuksa (at your option) any later version.
along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <time.h>
#include "util/auth_utils.h"
#include "responder/common/responder_packet.h"
#include "responder/common/responder.h"
#include "responder/common/negcache.h"
#include "providers/data_provider.h"
#include "responder/pam/pam_helpers.h"
enum pam_verbosity {
size_t *c)
switch (auth_token_type) {
case SSS_AUTHTOK_TYPE_EMPTY:
if (auth_token_length == 0) {
return EINVAL;
*c += auth_token_length;
return ret;
size_t *c) {
return EINVAL;
*c += size;
return EOK;
return EINVAL;
return EOK;
const char *name;
if (!name) {
return EIO;
return EOK;
const char *default_domain,
size_t c;
char *pam_user;
int ret;
return EINVAL;
c = sizeof(uint32_t);
return EINVAL;
switch(type) {
case SSS_PAM_ITEM_USER:
case SSS_PAM_ITEM_SERVICE:
case SSS_PAM_ITEM_TTY:
case SSS_PAM_ITEM_RUSER:
case SSS_PAM_ITEM_RHOST:
case SSS_PAM_ITEM_CLI_PID:
case SSS_PAM_ITEM_AUTHTOK:
case SSS_PAM_ITEM_NEWAUTHTOK:
c += size;
} while(c < blen);
return EOK;
const char *default_domain,
int ret;
return ret;
return EINVAL;
return EOK;
switch (auth_token_type) {
case SSS_AUTHTOK_TYPE_EMPTY:
return EINVAL;
*c += auth_token_length;
return ret;
const char *default_domain,
int ret;
end = 0;
if (ret) {
return ret;
if (ret) {
return ret;
return EOK;
if (!attrs) {
goto fail;
goto fail;
goto fail;
goto fail;
return EOK;
fail:
return ret;
int ret;
int pam_verbosity;
return EINVAL;
switch (user_info_type) {
return EINVAL;
sizeof(int64_t));
if ((expire_date == 0 &&
(expire_date > 0 &&
return EOK;
int ret;
case SSS_PAM_AUTHENTICATE:
goto done;
if (ret) {
goto done;
case SSS_PAM_CHAUTHTOK_PRELIM:
case SSS_PAM_CHAUTHTOK:
goto done;
case SSS_PAM_SETCRED:
case SSS_PAM_ACCT_MGMT:
case SSS_PAM_OPEN_SESSION:
case SSS_PAM_CLOSE_SESSION:
goto done;
goto done;
goto done;
goto done;
goto done;
resp_c = 0;
resp_size = 0;
resp_c++;
sizeof(int32_t) +
goto done;
p += sizeof(int32_t);
p += sizeof(int32_t);
p += sizeof(int32_t);
p += sizeof(int32_t);
done:
case PAM_SUCCESS:
case PAM_PERM_DENIED:
if (delayed_until >= 0) {
goto done;
done:
return ret;
int ret;
if (!preq) {
return ENOMEM;
return ENOMEM;
goto done;
goto done;
goto done;
dom;
if (!dom) {
goto done;
goto done;
done:
struct pam_auth_req);
goto done;
goto done;
goto done;
done:
int ret;
while (dom) {
if (!dom) break;
if (!name) {
return ENOMEM;
return EIO;
return EFAULT;
return EIO;
return ENOENT;
return ENOENT;
SYSDB_CACHE_EXPIRE, 0);
return ret;
return EOK;
if (!dom) {
if (!dpreq) {
return ENOMEM;
if(!cb_ctx) {
return ENOMEM;
return EAGAIN;
return ENOENT;
char *err_msg;
&err_msg);
switch (ret) {
case EOK:
case EAGAIN:
case ENOENT:
return EOK;
int ret;
char *name;
if (err_maj) {
if (!name) {
goto done;
done:
if (ret) {
int ret;
return pam_cli_protocol_version;
return sss_cmds;