summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-03-11 13:19:30 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-03-11 13:19:30 +0100
commite53256be9125cdb9b354a59124ff6d6fb3c8227a (patch)
tree45f75234ac6937490124c7a474f6599b6a09683f
parentd26eebdbd33c7cf7e3f12c02b6794c815fe774cc (diff)
downloadecon-e53256be9125cdb9b354a59124ff6d6fb3c8227a.tar.gz
econ-e53256be9125cdb9b354a59124ff6d6fb3c8227a.tar.bz2
econ-e53256be9125cdb9b354a59124ff6d6fb3c8227a.zip
econproxy: Use free_iov on error in framebuffer update
-rw-r--r--econproxy.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/econproxy.c b/econproxy.c
index cca75ec..e3a68c3 100644
--- a/econproxy.c
+++ b/econproxy.c
@@ -416,8 +416,11 @@ free_iov(struct iovec *iov, int iovcnt, int members_only)
{
int i;
- for (i = 0; i < iovcnt; ++i)
+ for (i = 0; i < iovcnt; ++i) {
+ if (iov[i].iov_base == NULL)
+ break;
free(iov[i].iov_base);
+ }
if (!members_only)
free(iov);
}
@@ -563,17 +566,8 @@ rfb_retrieve_framebuffer_update(struct ep *ep,
return 0;
err:
- {
- int n = 1 + framebuffer_update->nrects * 2;
-
- iov--;
- for (i = 0; i < n; ++i) {
- if (iov[n].iov_base == NULL)
- break;
- free(iov[i].iov_base);
- }
- free(iov);
- }
+ free_iov(--iov, 1 + framebuffer_update->nrects * 2, 0);
+
return -1;
}