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;
}
//--------------------------------------------------------------------
Pergunta
chneves
Olá Pessoal,
Estou com um problema ao tentar compilar um programa em C.
Estou recebendo a seguinte mensagem de erro:
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: Editado por chnevesLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.