summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2010-10-02 11:13:34 +0200
committerVolker Lendecke <vl@samba.org>2010-10-02 11:17:49 +0200
commitfc6e910e69f49cd482966eb9af3f27c0b65bcf4b (patch)
tree46abee39db9a204b2268b8a199cfe18d62a08251 /lib
parented5e05a15d3a8bea3a4f428d1664c9c5077866c2 (diff)
downloadsamba-fc6e910e69f49cd482966eb9af3f27c0b65bcf4b.tar.gz
samba-fc6e910e69f49cd482966eb9af3f27c0b65bcf4b.tar.bz2
samba-fc6e910e69f49cd482966eb9af3f27c0b65bcf4b.zip
s3: Fix a 64-bit BUG
Quick explanation why this is a problem: It is not safe to pass a pointer to a uint32_t into a routine that expects a size_t *. The routine that this pointer is passed to has no chance to find out that in reality it was passed a pointer to a uint32_t. On platforms where sizeof(size_t)==8, we get a nice overwrite of a stack area that should not be overwritten. As this happens over an over again: Does someone know a means to make gcc stop with an error in this case? Volker
Diffstat (limited to 'lib')
-rw-r--r--lib/util/asn1.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/util/asn1.c b/lib/util/asn1.c
index c4923343e2..7e37fbc91b 100644
--- a/lib/util/asn1.c
+++ b/lib/util/asn1.c
@@ -1011,7 +1011,7 @@ NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size)
NTSTATUS asn1_peek_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size)
{
struct asn1_data asn1;
- uint32_t size;
+ size_t size;
bool ok;
ZERO_STRUCT(asn1);