summaryrefslogtreecommitdiff
path: root/source3/rpc_parse/parse_prs.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2002-01-18 00:36:16 +0000
committerJeremy Allison <jra@samba.org>2002-01-18 00:36:16 +0000
commit2a3673994d9574068b5fce5d694b1183b9c67395 (patch)
treec9a89ac3a24eac63bb3c3054ca20d240059217bc /source3/rpc_parse/parse_prs.c
parent37834a48e8b944936c9eb067203f457136fb3a2c (diff)
downloadsamba-2a3673994d9574068b5fce5d694b1183b9c67395.tar.gz
samba-2a3673994d9574068b5fce5d694b1183b9c67395.tar.bz2
samba-2a3673994d9574068b5fce5d694b1183b9c67395.zip
Added prs_mem_clear(). Clear memory on buffer reallocation. That way
we're not returning what the client gave us. Jeremy. (This used to be commit 9a969069f132019cdd8a11be2b00356a3f09b64d)
Diffstat (limited to 'source3/rpc_parse/parse_prs.c')
-rw-r--r--source3/rpc_parse/parse_prs.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c
index 7b4a5f3181..725e2e01a5 100644
--- a/source3/rpc_parse/parse_prs.c
+++ b/source3/rpc_parse/parse_prs.c
@@ -146,6 +146,15 @@ void prs_mem_free(prs_struct *ps)
}
/*******************************************************************
+ Clear the memory in a parse structure.
+ ********************************************************************/
+
+void prs_mem_clear(prs_struct *ps)
+{
+ memset(ps->data_p, '\0', (size_t)ps->buffer_size);
+}
+
+/*******************************************************************
Allocate memory when unmarshalling... Always zero clears.
********************************************************************/
@@ -261,7 +270,7 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
DEBUG(0,("prs_grow: Malloc failure for size %u.\n", (unsigned int)new_size));
return False;
}
- memset(new_data, '\0', new_size );
+ memset(new_data, '\0', (size_t)new_size );
} else {
/*
* If the current buffer size is bigger than the space needed, just
@@ -275,7 +284,7 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
return False;
}
- memset(&new_data[ps->buffer_size], '\0', new_size - ps->buffer_size);
+ memset(&new_data[ps->buffer_size], '\0', (size_t)(new_size - ps->buffer_size));
}
ps->buffer_size = new_size;
ps->data_p = new_data;
@@ -306,7 +315,7 @@ BOOL prs_force_grow(prs_struct *ps, uint32 extra_space)
return False;
}
- memset(&new_data[ps->buffer_size], '\0', new_size - ps->buffer_size);
+ memset(&new_data[ps->buffer_size], '\0', (size_t)(new_size - ps->buffer_size));
ps->buffer_size = new_size;
ps->data_p = new_data;