diff options
author | Volker Lendecke <vl@samba.org> | 2010-10-02 11:13:34 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2010-10-02 11:17:49 +0200 |
commit | fc6e910e69f49cd482966eb9af3f27c0b65bcf4b (patch) | |
tree | 46abee39db9a204b2268b8a199cfe18d62a08251 /lib | |
parent | ed5e05a15d3a8bea3a4f428d1664c9c5077866c2 (diff) | |
download | samba-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.c | 2 |
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); |