libwbclient: Make wbc_create_logon_info not use talloc
authorVolker Lendecke <vl@samba.org>
Sun, 4 Apr 2010 09:57:39 +0000 (11:57 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 19 Apr 2010 12:27:23 +0000 (14:27 +0200)
nsswitch/libwbclient/wbc_pam.c

index be822839180355c99026a09845cd38e0bf5ef1f6..892ccb7aa2e7bcc89ab5ac90a957fa34a71caff8 100644 (file)
@@ -283,13 +283,22 @@ done:
        return wbc_status;
 }
 
+static void wbcLogonUserInfoDestructor(void *ptr)
+{
+       struct wbcLogonUserInfo *i = (struct wbcLogonUserInfo *)ptr;
+       wbcFreeMemory(i->info);
+       wbcFreeMemory(i->blobs);
+}
+
 static wbcErr wbc_create_logon_info(struct winbindd_response *resp,
                                    struct wbcLogonUserInfo **_i)
 {
        wbcErr wbc_status = WBC_ERR_SUCCESS;
        struct wbcLogonUserInfo *i;
 
-       i = talloc_zero(NULL, struct wbcLogonUserInfo);
+       i = (struct wbcLogonUserInfo *)wbcAllocateMemory(
+               sizeof(struct wbcLogonUserInfo), 1,
+               wbcLogonUserInfoDestructor);
        BAIL_ON_PTR_ERROR(i, wbc_status);
 
        wbc_status = wbc_create_auth_info(resp, &i->info);
@@ -320,11 +329,7 @@ static wbcErr wbc_create_logon_info(struct winbindd_response *resp,
        *_i = i;
        i = NULL;
 done:
-       if (!WBC_ERROR_IS_OK(wbc_status) && i) {
-               wbcFreeMemory(i->blobs);
-       }
-
-       talloc_free(i);
+       wbcFreeMemory(i);
        return wbc_status;
 }