From: Nikos Mavrogiannopoulos Date: Tue, 5 Jun 2001 10:35:31 +0000 (+0000) Subject: better checking of return value of rindex X-Git-Tag: gnutls_0_1_4~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2cc6951fc6adb8900f32e03050b3e18cfaa14bb0;p=thirdparty%2Fgnutls.git better checking of return value of rindex --- diff --git a/lib/crypt_bcrypt.c b/lib/crypt_bcrypt.c index d7d93042e4..46f952f9e7 100644 --- a/lib/crypt_bcrypt.c +++ b/lib/crypt_bcrypt.c @@ -596,7 +596,7 @@ char *crypt_bcrypt(const char *passwd, const char *salt, MPI g, MPI n) uint8 *csalt; uint8 *rtext; uint8 cost; - int i, salt_size = strlen(salt); + int i, salt_size = strlen(salt), len; unsigned char *local_salt, *v; int passwd_len, vsize; opaque *tmp; @@ -615,7 +615,14 @@ char *crypt_bcrypt(const char *passwd, const char *salt, MPI g, MPI n) } sp++; - if (_gnutls_sbase64_decode(sp, (int)rindex(sp, ':') - (int)sp, &csalt) < 0) { + len = (int)rindex(sp, ':'); + if (len==0) { /* no ':' was found */ + gnutls_assert(); + return NULL; + } + len -= (int) sp; + + if (_gnutls_sbase64_decode(sp, len, &csalt) < 0) { gnutls_assert(); return NULL; } diff --git a/lib/crypt_srpsha1.c b/lib/crypt_srpsha1.c index ff41d9ec39..91960ac914 100644 --- a/lib/crypt_srpsha1.c +++ b/lib/crypt_srpsha1.c @@ -62,7 +62,12 @@ char *crypt_srpsha1(const char *username, const char *passwd, } sp++; - len = (int)rindex(sp, ':') - (int)sp; + len = (int)rindex(sp, ':'); + if (len==0) { /* parse error */ + gnutls_assert(); + return NULL; + } + len -= (int)sp; rsalt_size = _gnutls_sbase64_decode(sp, len, &csalt); if (rsalt_size < 0) {