repositories
/
deb_libnfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
free_nfs_cb_data: add assert(data->free_continue_data)
[deb_libnfs.git]
/
lib
/
libnfs.c
diff --git
a/lib/libnfs.c
b/lib/libnfs.c
index 61cb29f6c1cc8f3eaf575aabb098f2fd89916020..2599accf6e14877b38b4a5dc9cf258ef9fbaff43 100644
(file)
--- 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) {
}
if (data->continue_data != NULL) {
+ assert(data->free_continue_data);
data->free_continue_data(data->continue_data);
data->continue_data = NULL;
}
data->free_continue_data(data->continue_data);
data->continue_data = NULL;
}
@@
-1105,6
+1106,8
@@
static int nfs_lookuppath_async(struct nfs_context *nfs, const char *path, nfs_c
if (data == NULL) {
rpc_set_error(nfs->rpc, "out of memory: failed to allocate "
"nfs_cb_data structure");
if (data == NULL) {
rpc_set_error(nfs->rpc, "out of memory: failed to allocate "
"nfs_cb_data structure");
+ if (free_continue_data)
+ free_continue_data(continue_data);
return -1;
}
memset(data, 0, sizeof(struct nfs_cb_data));
return -1;
}
memset(data, 0, sizeof(struct nfs_cb_data));
@@
-2369,6
+2372,7
@@
int nfs_creat_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb
ptr = strrchr(new_path, '/');
if (ptr == NULL) {
rpc_set_error(nfs->rpc, "Invalid path %s", path);
ptr = strrchr(new_path, '/');
if (ptr == NULL) {
rpc_set_error(nfs->rpc, "Invalid path %s", path);
+ free(new_path);
return -1;
}
*ptr = 0;
return -1;
}
*ptr = 0;
@@
-2590,6
+2594,7
@@
int nfs_mknod_async(struct nfs_context *nfs, const char *path, int mode, int dev
ptr = strrchr(cb_data->path, '/');
if (ptr == NULL) {
rpc_set_error(nfs->rpc, "Invalid path %s", path);
ptr = strrchr(cb_data->path, '/');
if (ptr == NULL) {
rpc_set_error(nfs->rpc, "Invalid path %s", path);
+ free_mknod_cb_data(cb_data);
return -1;
}
*ptr = 0;
return -1;
}
*ptr = 0;
@@
-3429,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;
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");
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));
return -1;
}
memset(data, 0, sizeof(struct nfs_cb_data));
@@
-3440,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->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) {
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) {
@@
-3449,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);
}
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;
if (nfs_chown_continue_internal(nfs, data) != 0) {
free_nfs_cb_data(data);
return -1;