SHA256
1
0
forked from pool/cryptsetup
cryptsetup/bug-476290_hashalot-hashlen.diff

35 lines
973 B
Diff

diff -up hashalot-0.3/hashalot.c.orig hashalot-0.3/hashalot.c
--- hashalot-0.3/hashalot.c.orig 2009-02-11 19:31:16.000000000 -0600
+++ hashalot-0.3/hashalot.c 2009-02-11 19:47:46.000000000 -0600
@@ -34,6 +34,7 @@
#include "sha512.h"
#define PASSWDBUFFLEN 130
+#define MAXHASHLEN (ULONG_MAX/2 - 2)
typedef int (*phash_func_t)(char dest[], size_t dest_len, const char src[], size_t src_len);
@@ -179,8 +180,7 @@ static void *
xmalloc (size_t size) {
void *p;
- if (size == 0)
- return NULL;
+ assert(size != 0);
p = malloc(size);
if (p == NULL) {
@@ -239,6 +239,12 @@ main(int argc, char *argv[])
show_usage(argv[0]);
exit(EXIT_FAILURE);
}
+ if (hashlen >= MAXHASHLEN) {
+ fprintf(stderr,
+ "please supply a value smaller than %lu for the -n option\n",
+ MAXHASHLEN);
+ exit(EXIT_FAILURE);
+ }
break;
case 's':
salt = optarg;