summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2011-08-06 06:16:46 +1000
committerDamien Miller <djm@mindrot.org>2011-08-06 06:16:46 +1000
commitadb467fb692600c569d8129dfd96371b481d2653 (patch)
tree50728a7b11d956711f722b62f378a4905d0f5229
parent35e48198a80aba7361bce8dde4fba464800e3ff6 (diff)
downloadopenssh-git-adb467fb692600c569d8129dfd96371b481d2653.tar.gz
- markus@cvs.openbsd.org 2011/08/01 19:18:15
[gss-serv.c] prevent post-auth resource exhaustion (int overflow leading to 4GB malloc); report Adam Zabrock; ok djm@, deraadt@
-rw-r--r--ChangeLog4
-rw-r--r--gss-serv.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index ccca485f..8b4676cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,10 @@
fail open(2) with EPERM rather than SIGKILLing the whole process. libc
will call open() to do strerror() when NLS is enabled;
feedback and ok markus@
+ - markus@cvs.openbsd.org 2011/08/01 19:18:15
+ [gss-serv.c]
+ prevent post-auth resource exhaustion (int overflow leading to 4GB malloc);
+ report Adam Zabrock; ok djm@, deraadt@
20110624
- (djm) [configure.ac Makefile.in sandbox-darwin.c] Add a sandbox for
diff --git a/gss-serv.c b/gss-serv.c
index 2ec7ea19..c719c130 100644
--- a/gss-serv.c
+++ b/gss-serv.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: gss-serv.c,v 1.22 2008/05/08 12:02:23 djm Exp $ */
+/* $OpenBSD: gss-serv.c,v 1.23 2011/08/01 19:18:15 markus Exp $ */
/*
* Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -229,6 +229,8 @@ ssh_gssapi_parse_ename(Gssctxt *ctx, gss_buffer_t ename, gss_buffer_t name)
name->length = get_u32(tok+offset);
offset += 4;
+ if (UINT_MAX - offset < name->length)
+ return GSS_S_FAILURE;
if (ename->length < offset+name->length)
return GSS_S_FAILURE;