diff options
author | Volker Lendecke <vl@samba.org> | 2014-09-16 19:19:06 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-09-17 00:31:21 +0200 |
commit | 4b788ffe65726df144af4e6aaa6ddabc141f859c (patch) | |
tree | f84df7d42e6f35a79faff17e8040657ba95a28e1 /source3/lib | |
parent | 4be583493aabba76e36e5a105702d6de0c2e82cc (diff) | |
download | samba-4b788ffe65726df144af4e6aaa6ddabc141f859c.tar.gz samba-4b788ffe65726df144af4e6aaa6ddabc141f859c.tar.xz samba-4b788ffe65726df144af4e6aaa6ddabc141f859c.zip |
lib: Avoid a talloc in write_data_iov
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/util_sock.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 522f6002bc..d865ffba7c 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -255,7 +255,8 @@ ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt) ssize_t to_send; ssize_t thistime; size_t sent; - struct iovec *iov_copy, *iov; + struct iovec iov_copy[iovcnt]; + struct iovec *iov; to_send = iov_buflen(orig_iov, iovcnt); if (to_send == -1) { @@ -276,13 +277,7 @@ ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt) * discarding elements. */ - iov_copy = (struct iovec *)talloc_memdup( - talloc_tos(), orig_iov, sizeof(struct iovec) * iovcnt); - - if (iov_copy == NULL) { - errno = ENOMEM; - return -1; - } + memcpy(iov_copy, orig_iov, sizeof(struct iovec) * iovcnt); iov = iov_copy; while (sent < to_send) { @@ -311,7 +306,6 @@ ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt) sent += thistime; } - TALLOC_FREE(iov_copy); return sent; } |