diff options
author | Sander Vrijders <sander.vrijders@ugent.be> | 2017-03-30 12:14:38 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@ugent.be> | 2017-03-30 12:14:38 +0200 |
commit | cd6801dc8746a79cfc116f3e73fc3afc5276a127 (patch) | |
tree | 18771e2745c9c2c6162118f15b7cb5abc35a9ed9 /src/lib/cdap.c | |
parent | 19d90d59b5b3c76bb9c67e6a78ff286f3529c6ee (diff) | |
download | ouroboros-cd6801dc8746a79cfc116f3e73fc3afc5276a127.tar.gz ouroboros-cd6801dc8746a79cfc116f3e73fc3afc5276a127.zip |
lib: Fix invalid access in CDAP
This fixes an invalid access to an object that was already freed.
Diffstat (limited to 'src/lib/cdap.c')
-rw-r--r-- | src/lib/cdap.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lib/cdap.c b/src/lib/cdap.c index 54a5b262..38806c23 100644 --- a/src/lib/cdap.c +++ b/src/lib/cdap.c @@ -703,6 +703,7 @@ int cdap_reply_wait(struct cdap * instance, { int ret; struct cdap_req * r; + invoke_id_t iid; if (instance == NULL || (data != NULL && len == NULL)) return -EINVAL; @@ -711,10 +712,12 @@ int cdap_reply_wait(struct cdap * instance, if (r == NULL) return -EINVAL; + iid = r->iid; + ret = cdap_req_wait(r); if (ret < 0) { cdap_sent_del(instance, r); - release_id(instance, r->iid); + release_id(instance, iid); return ret; } @@ -727,8 +730,8 @@ int cdap_reply_wait(struct cdap * instance, ret = r->response; - release_id(instance, r->iid); cdap_sent_del(instance, r); + release_id(instance, iid); return ret; } |