Pamified killer?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Říjen 26 11:07:43 CEST 2000


On Thu, 26 Oct 2000, Petr Tomasek wrote:

> No jo, prekecl jsem se. Samozrejme jsem mel na mysli
> programovani pamifikovanych programu...

Na tom neni nic sloziteho. Muze to vypadat treba nejak takto:

/* konverzacni funkce, ktera nekonverzuje */

int
conv(int n, const struct pam_message **msgm,
     struct pam_response **response, void *appdata_ptr)
{
  int k;

  if (n <= 0) return PAM_CONV_ERR;

  for (k = 0; k < n; ++k) {
    switch (msgm[k]->msg_style)
      case PAM_ERROR_MSG: case PAM_TEXT_INFO: case PAM_BINARY_MSG:
        continue;
      default:
        return PAM_CONV_ERR;
    }
  }

  *response = (struct pam_response *) calloc(n, sizeof(pam_response));
  if (!*response) return PAM_BUF_ERR;
  return PAM_SUCCESS;
}

/* vlastni test, vraci PAM_SUCCESS, kdyz je vsechno ok */

int
test_user(const char *user, const char *tty,
          const char *rhost, const char *ruser)
{
    pam_handle_t *pamh = NULL;
    int r;

    r = pam_start(service, user, &conv, &pamh);
    if (r == PAM_SUCCESS && tty)
      r = pam_set_item(pamh, PAM_TTY, tty);
    if (r == PAM_SUCCESS && rhost)
      r = pam_set_item(pamh, PAM_RHOST, rhost);
    if (r == PAM_SUCCESS && ruser)
      r = pam_set_item(pamh, PAM_RUSER, ruser);
    if (r == PAM_SUCCESS)
      r = pam_acct_mgmt(pamh, 0);
    pam_end(pamh, result);
    return r;
}

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux