Changeset: 6717e1ca0b23 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6717e1ca0b23
Modified Files:
monetdb5/mal/mal_authorize.c
Branch: Aug2011
Log Message:
AUTHhashPassword: do not use alloca for variable sized buffer
diffs (70 lines):
diff --git a/monetdb5/mal/mal_authorize.c b/monetdb5/mal/mal_authorize.c
--- a/monetdb5/mal/mal_authorize.c
+++ b/monetdb5/mal/mal_authorize.c
@@ -1021,55 +1021,56 @@
*/
static str
AUTHhashPassword(str *ret, str *algo, str *password, str *challenge) {
- str tmp;
+ str tmp = MAL_SUCCEED;
int len = (int) (strlen(*password) + strlen(*challenge));
- str key = alloca(sizeof(char) * (len + 1));
+ str key = GDKmalloc(sizeof(char) * (len + 1));
snprintf(key, len + 1, "%s%s", *password, *challenge);
#ifdef HAVE_RIPEMD160
if (strcmp(*algo, "RIPEMD160") == 0) {
- rethrow("hashPassword", tmp, AUTHRIPEMD160Sum(ret, &key, &len));
+ tmp = AUTHRIPEMD160Sum(ret, &key, &len);
} else
#endif
#ifdef HAVE_SHA512
if (strcmp(*algo, "SHA512") == 0) {
int bits = 512;
- rethrow("hashPassword", tmp, AUTHSHA2Sum(ret, &key, &len,
&bits));
+ tmp = AUTHSHA2Sum(ret, &key, &len, &bits);
} else
#endif
#ifdef HAVE_SHA384
if (strcmp(*algo, "SHA384") == 0) {
int bits = 384;
- rethrow("hashPassword", tmp, AUTHSHA2Sum(ret, &key, &len,
&bits));
+ tmp = AUTHSHA2Sum(ret, &key, &len, &bits);
} else
#endif
#ifdef HAVE_SHA256
if (strcmp(*algo, "SHA256") == 0) {
int bits = 256;
- rethrow("hashPassword", tmp, AUTHSHA2Sum(ret, &key, &len,
&bits));
+ tmp = AUTHSHA2Sum(ret, &key, &len, &bits);
} else
#endif
#ifdef HAVE_SHA224
if (strcmp(*algo, "SHA224") == 0) {
int bits = 224;
- rethrow("hashPassword", tmp, AUTHSHA2Sum(ret, &key, &len,
&bits));
+ tmp = AUTHSHA2Sum(ret, &key, &len, &bits);
} else
#endif
#ifdef HAVE_SHA1
if (strcmp(*algo, "SHA1") == 0) {
- rethrow("hashPassword", tmp, AUTHSHA1Sum(ret, &key, &len));
+ tmp = AUTHSHA1Sum(ret, &key, &len);
} else
#endif
#ifdef HAVE_MS5
if (strcmp(*algo, "MD5") == 0) {
- rethrow("hashPassword", tmp, AUTHMD5Sum(ret, &key, &len));
+ tmp = AUTHMD5Sum(ret, &key, &len);
} else
#endif
{
throw(MAL, "hashPassword", "unsupported hash type: '%s'",
*algo);
}
- return(MAL_SUCCEED);
+ GDKfree(key);
+ return(tmp);
}
/**
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list