summaryrefslogtreecommitdiffstats
path: root/source3/lib
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-09-16 19:19:06 +0200
committerJeremy Allison <jra@samba.org>2014-09-17 00:31:21 +0200
commit4b788ffe65726df144af4e6aaa6ddabc141f859c (patch)
treef84df7d42e6f35a79faff17e8040657ba95a28e1 /source3/lib
parent4be583493aabba76e36e5a105702d6de0c2e82cc (diff)
downloadsamba-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.c12
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;
}