summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2014-06-03 15:06:33 +0200
committerMichael Adam <obnox@samba.org>2014-06-05 23:57:10 +0200
commit74ade40e3efe1cc779c636e5b6a8ea96ae349c52 (patch)
tree38bb17d5bf6650c4f1722459f65b83890efd5ddd /lib
parent353709b3f35cffa8a8003dc2e7f4371f8fe90c0a (diff)
downloadsamba-74ade40e3efe1cc779c636e5b6a8ea96ae349c52.tar.gz
samba-74ade40e3efe1cc779c636e5b6a8ea96ae349c52.tar.xz
samba-74ade40e3efe1cc779c636e5b6a8ea96ae349c52.zip
swrap: We need to pass a pointer-pointer to not leak memory.
CID 63533 Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/socket_wrapper/socket_wrapper.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c
index 19ac1840cdc..7275e73afef 100644
--- a/lib/socket_wrapper/socket_wrapper.c
+++ b/lib/socket_wrapper/socket_wrapper.c
@@ -3196,14 +3196,14 @@ static int swrap_msghdr_add_socket_info(struct socket_info *si,
}
static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space);
static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space);
static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space) {
struct cmsghdr *cmsg;
int rc = -1;
@@ -3234,7 +3234,7 @@ static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg,
}
static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space)
{
size_t cmspace;
@@ -3244,13 +3244,13 @@ static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
(*cm_data_space) +
CMSG_SPACE(cmsg->cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr)));
- p = realloc(cm_data, cmspace);
+ p = realloc((*cm_data), cmspace);
if (p == NULL) {
return -1;
}
- cm_data = p;
+ (*cm_data) = p;
- p = cm_data + (*cm_data_space);
+ p = (*cm_data) + (*cm_data_space);
*cm_data_space = cmspace;
memcpy(p, cmsg, cmsg->cmsg_len);
@@ -3259,12 +3259,12 @@ static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
}
static int swrap_sendmsg_filter_cmsg_pktinfo(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space);
static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space)
{
int rc = -1;
@@ -3292,7 +3292,7 @@ static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg,
}
static int swrap_sendmsg_filter_cmsg_pktinfo(struct cmsghdr *cmsg,
- uint8_t *cm_data,
+ uint8_t **cm_data,
size_t *cm_data_space)
{
(void)cmsg; /* unused */
@@ -3432,7 +3432,7 @@ static ssize_t swrap_sendmsg_before(int fd,
uint8_t *cmbuf = NULL;
size_t cmlen = 0;
- ret = swrap_sendmsg_filter_cmsghdr(msg, cmbuf, &cmlen);
+ ret = swrap_sendmsg_filter_cmsghdr(msg, &cmbuf, &cmlen);
if (ret < 0) {
free(cmbuf);
return -1;