summaryrefslogtreecommitdiffstats
path: root/source3/lib
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2013-12-05 11:20:49 +0100
committerJeremy Allison <jra@samba.org>2014-04-11 21:41:07 +0200
commitf71780202a3e736432020cf894b138a06e4bb869 (patch)
tree48227b3c6674088233695c7fb960fd07c373f252 /source3/lib
parent4daf7d475c8cca69e2e3b20dc9fb84c4bd8cb4cb (diff)
downloadsamba-f71780202a3e736432020cf894b138a06e4bb869.tar.gz
samba-f71780202a3e736432020cf894b138a06e4bb869.tar.xz
samba-f71780202a3e736432020cf894b138a06e4bb869.zip
s3:lib: use stack buffers in drain_socket() and default_sys_recvfile()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/recvfile.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/source3/lib/recvfile.c b/source3/lib/recvfile.c
index 72f4257fc5c..500a7e43399 100644
--- a/source3/lib/recvfile.c
+++ b/source3/lib/recvfile.c
@@ -51,7 +51,7 @@ static ssize_t default_sys_recvfile(int fromfd,
size_t total = 0;
size_t bufsize = MIN(TRANSFER_BUF_SIZE,count);
size_t total_written = 0;
- char *buffer = NULL;
+ char buffer[bufsize];
DEBUG(10,("default_sys_recvfile: from = %d, to = %d, "
"offset=%.0f, count = %lu\n",
@@ -70,11 +70,6 @@ static ssize_t default_sys_recvfile(int fromfd,
}
}
- buffer = SMB_MALLOC_ARRAY(char, bufsize);
- if (buffer == NULL) {
- return -1;
- }
-
while (total < count) {
size_t num_written = 0;
ssize_t read_ret;
@@ -84,7 +79,6 @@ static ssize_t default_sys_recvfile(int fromfd,
read_ret = sys_read(fromfd, buffer, toread);
if (read_ret <= 0) {
/* EOF or socket error. */
- free(buffer);
return -1;
}
@@ -119,7 +113,6 @@ static ssize_t default_sys_recvfile(int fromfd,
total += read_ret;
}
- free(buffer);
if (saved_errno) {
/* Return the correct write error. */
errno = saved_errno;
@@ -247,21 +240,15 @@ ssize_t drain_socket(int sockfd, size_t count)
{
size_t total = 0;
size_t bufsize = MIN(TRANSFER_BUF_SIZE,count);
- char *buffer = NULL;
+ char buffer[bufsize];
int old_flags = 0;
if (count == 0) {
return 0;
}
- buffer = SMB_MALLOC_ARRAY(char, bufsize);
- if (buffer == NULL) {
- return -1;
- }
-
old_flags = fcntl(sockfd, F_GETFL, 0);
if (set_blocking(sockfd, true) == -1) {
- free(buffer);
return -1;
}
@@ -281,7 +268,6 @@ ssize_t drain_socket(int sockfd, size_t count)
out:
- free(buffer);
if (fcntl(sockfd, F_SETFL, old_flags) == -1) {
return -1;
}