[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Memory leaks?
- From: Dan Yefimov <dan ns15 lightwave net ru>
- To: Pluggable Authentication Modules <pam-list redhat com>
- Subject: Re: Memory leaks?
- Date: Tue, 3 Jul 2007 20:26:20 +0400 (MSD)
On Tue, 3 Jul 2007, Evgeniy Khramtsov wrote:
> 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.
It's meant by caller some function in the PAM module calling your conversation
function.
> Could you point me to my fault?
>
As for me, there seems to be no your fault. It looks like some module in the
module stack just didn't release memory occupied by pam_message structure(s) on
the error returned from your conversation function.
--
Sincerely Your, Dan.
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]