Ir para conteúdo
Fórum Script Brasil

chneves

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Tudo que chneves postou

  1. chneves

    Erro Ao Compilar Em C

    Wicker Man... Show cara!!!! :) Retirei o const da função my_conv e declarei ela como extern "C" e foi perfeito!!! :) Valeu mesmo, muitissimo obrigado pela sua ajuda... abraço, :)
  2. chneves

    Erro Ao Compilar Em C

    Pessoal, ninguém sabe como me ajudar??? Estou precisando compilar esse programa e não estou conseguindo... Obrigado, Carlos Henrique
  3. Olá Pessoal, Estou com um problema ao tentar compilar um programa em C. Estou recebendo a seguinte mensagem de erro: [b]"line 62: Error: Cannot use int(*)(int,const pam_message**,pam_response**,void*) to initialize extern "C" int(*)(int,pam_message**,pam_response**,void*)"[/b] Não sei o que pode ser e não estou conseguindo resolver. Estou utilizando o CC do Sun Studio Express para compilar. Se alguém puder me ajudar, agradeço. Segue abaixo o fonte do programa que estou compilando: /* * Author: Ariel Nigri * Version: 1.0 stable * By: Winco Tec. e Sis. Ltda. * www.winco.com.br * Please observe the General Public License (GPL) to use this code * Thanks for all that makes Linux an exemple of freedom */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/file.h> #include <pwd.h> #include <grp.h> #ifdef _cplusplus extern "C"{ #endif #include <security/pam_appl.h> #ifdef _cplusplus }; #endif int respIndex = 0; //-------------------------------------------------------------------------- pam_handle_t *pamh=NULL; static int my_conv(int nmsg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr) { int i; const char **senhas = (const char **) appdata_ptr; *resp = (struct pam_response *) malloc(sizeof(struct pam_response) * nmsg); memset(*resp, 0, sizeof(struct pam_response) * nmsg); for (i = 0; i < nmsg; i ++) { // printf("%s\n", (*msg)[i].msg); fflush(stdout); (*resp)[i].resp = strdup(senhas[respIndex]); } return PAM_SUCCESS; } //-------------------------------------------------------------------------- int main(int argc, char *argv[]) { if (argc != 4) { printf("uso: %s <usuario> <senha_antiga> <senha_nova>\n", argv[0]); return 1; } struct pam_conv conv = { my_conv, (void *) (argv + 2) // passamos a senha antiga e a nova. }; if (pam_start("passwd", argv[1], &conv, &pamh) != PAM_SUCCESS) { printf("ERRO: Iniciando biblioteca PAM\n"); return 1; } int retval = pam_authenticate(pamh, 0); if (retval != PAM_SUCCESS) { printf("ERRO: Logon invalido\n"); } else { setuid(0); respIndex = 1; retval = pam_chauthtok(pamh, 0); /* is user really user? */ if (retval != PAM_SUCCESS) { printf("ERRO: Nova senha invalida\n"); } } /* This is where we have been authorized or not. */ if (retval == PAM_SUCCESS) { // umask(0117); // strcpy(user, luser); // Vamos mudar nosso uid e gid. printf("Senha alterada com sucesso\n"); } else { printf("Houve algum erro. Tente novamente\n"); } pam_end(pamh, PAM_SUCCESS); return retval; } //--------------------------------------------------------------------
×
×
  • Criar Novo...