X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Flibnfs.c;h=2599accf6e14877b38b4a5dc9cf258ef9fbaff43;hb=206a2ff644dc30bedda747d53dee2659f7dc634f;hp=969721e0330909f45e1906afba418d7b9c057c7e;hpb=a1287496488a3d04e205cb1999e0639768bf5b95;p=deb_libnfs.git diff --git a/lib/libnfs.c b/lib/libnfs.c index 969721e..2599acc 100644 --- a/lib/libnfs.c +++ b/lib/libnfs.c @@ -532,6 +532,7 @@ void free_nfs_cb_data(struct nfs_cb_data *data) } if (data->continue_data != NULL) { + assert(data->free_continue_data); data->free_continue_data(data->continue_data); data->continue_data = NULL; } @@ -3433,10 +3434,10 @@ int nfs_fchown_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int chown_data->uid = uid; chown_data->gid = gid; - data = malloc(sizeof(struct nfs_cb_data)); if (data == NULL) { rpc_set_error(nfs->rpc, "out of memory. failed to allocate memory for fchown data"); + free(chown_data); return -1; } memset(data, 0, sizeof(struct nfs_cb_data)); @@ -3444,6 +3445,7 @@ int nfs_fchown_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int data->cb = cb; data->private_data = private_data; data->continue_data = chown_data; + data->free_continue_data = free; data->fh.data.data_len = nfsfh->fh.data.data_len; data->fh.data.data_val = malloc(data->fh.data.data_len); if (data->fh.data.data_val == NULL) { @@ -3453,7 +3455,6 @@ int nfs_fchown_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int } memcpy(data->fh.data.data_val, nfsfh->fh.data.data_val, data->fh.data.data_len); - if (nfs_chown_continue_internal(nfs, data) != 0) { free_nfs_cb_data(data); return -1;