[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Memory leaks?



I've just started to implement PAM support in my application.
All works well, but looks like I have some memory leaks.

This is a very simplified version of the code to demonstrate the issue:

#include <security/pam_appl.h>
#include <stdio.h>

static int misc_conv(int num_msg,
            const struct pam_message **msg,
            struct pam_response **resp,
            void *appdata_ptr)
{
 return PAM_CONV_ERR;
}

static int auth(char *service, char *user, char *password)
{
 int retval;
 struct pam_conv conv = {
   misc_conv,
   password
 };
 pam_handle_t *pamh = NULL;
 retval = pam_start(service, user, &conv, &pamh);
 if (retval == PAM_SUCCESS)
   retval = pam_authenticate(pamh, 0);
 printf("%s\n", pam_strerror(pamh, retval));
 pam_end(pamh, retval);
 return retval;
}

int main(int argc, char *argv[])
{
 if (argc != 4)
 {
   printf("Usage: %s service user password\n", argv[0]);
   return 1;
 }
 char *service = argv[1];
 char *user = argv[2];
 char *password = argv[3];
 for (;;) auth(service, user, password);
 return 0;
}

As you can see I don't use malloc/calloc here. However, the memory is leaking and valgrind shows this (451 bytes per iteration in my case). The doc says that it is the caller's responsibility to release the responses, but I just can't understand where should I free() it.
Could you point me to my fault?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]