ptr = strrchr(new_path, '/');
if (ptr == NULL) {
+ free(new_path);
rpc_set_error(nfs->rpc, "Invalid path %s", path);
return -1;
}
ptr = strrchr(new_path, '/');
if (ptr == NULL) {
+ free(new_path);
rpc_set_error(nfs->rpc, "Invalid path %s", path);
return -1;
}
ptr = strrchr(new_path, '/');
if (ptr == NULL) {
+ free(new_path);
rpc_set_error(nfs->rpc, "Invalid path %s", path);
return -1;
}
/* data->path now points to the parent directory, and beyond the nul terminateor is the new directory to create */
if (nfs_lookuppath_async(nfs, cb_data->path, cb, private_data, nfs_mknod_continue_internal, cb_data, free_mknod_cb_data, 0) != 0) {
rpc_set_error(nfs->rpc, "Out of memory: failed to start parsing the path components");
- free_mknod_cb_data(cb_data);
return -1;
}
nfsdirent->name = strdup(entry->name);
if (nfsdirent->name == NULL) {
data->cb(-ENOMEM, nfs, "Failed to allocate dirent->name", data->private_data);
+ free(nfsdirent);
nfs_free_nfsdir(nfsdir);
data->continue_data = NULL;
free_nfs_cb_data(data);
* commands in flight to complete
*/
if (rdpe_cb_data->getattrcount > 0) {
+ nfs_free_nfsdir(nfsdir);
+ data->continue_data = NULL;
+ free_nfs_cb_data(data);
rdpe_cb_data->status = RPC_STATUS_ERROR;
free(rdpe_lookup_cb_data);
return;
}
}
-
static void nfs_opendir_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
READDIRPLUS3res *res = command_data;
memcpy(data->fh.data.data_val, nfsfh->fh.data.data_val, data->fh.data.data_len);
if (nfs_chmod_continue_internal(nfs, data) != 0) {
- free_nfs_cb_data(data);
return -1;
}
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;
}