diff options
| author | joda <joda@NetBSD.org> | 2002-10-21 19:39:51 +0000 |
|---|---|---|
| committer | joda <joda@NetBSD.org> | 2002-10-21 19:39:51 +0000 |
| commit | bc13d2aefa316c7253dc3e544c2cc861b8a46ca0 (patch) | |
| tree | 78d8635838d92e06c4c1ea2945b3551ddf0cec01 /crypto | |
| parent | 2a89b960772c1c588ddb1b8cbd610c947c7449ba (diff) | |
don't blindly trust rlen; from Heimdal 0.5.1
Diffstat (limited to 'crypto')
| -rw-r--r-- | crypto/dist/heimdal/kadmin/version4.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/crypto/dist/heimdal/kadmin/version4.c b/crypto/dist/heimdal/kadmin/version4.c index d2a9b4a9dc9..471cd1d70e2 100644 --- a/crypto/dist/heimdal/kadmin/version4.c +++ b/crypto/dist/heimdal/kadmin/version4.c @@ -42,7 +42,7 @@ #include <kadm_err.h> __RCSID("$Heimdal: version4.c,v 1.26 2002/09/10 15:20:46 joda Exp $" - "$NetBSD: version4.c,v 1.1.1.4 2002/09/12 12:41:39 joda Exp $"); + "$NetBSD: version4.c,v 1.2 2002/10/21 19:39:51 joda Exp $"); #define KADM_NO_OPCODE -1 #define KADM_NO_ENCRYPT -2 @@ -823,6 +823,13 @@ decode_packet(krb5_context context, off += _krb5_get_int(msg + off, &rlen, 4); memset(&authent, 0, sizeof(authent)); authent.length = message.length - rlen - KADM_VERSIZE - 4; + + if(authent.length >= MAX_KTXT_LEN) { + krb5_warnx(context, "received bad rlen (%lu)", (unsigned long)rlen); + make_you_loose_packet (KADM_LENGTH_ERROR, reply); + return; + } + memcpy(authent.dat, (char*)msg + off, authent.length); off += authent.length; |
