diff -urpN john-1.7.8-jumbo-7a/src/XSHA512_fmt.c john-1.7.8-jumbo-7b/src/XSHA512_fmt.c
--- john-1.7.8-jumbo-7a/src/XSHA512_fmt.c	2011-09-23 18:49:38.765625000 +0000
+++ john-1.7.8-jumbo-7b/src/XSHA512_fmt.c	2011-09-23 18:48:36.718750000 +0000
@@ -44,7 +44,7 @@
 static struct fmt_tests tests[] = {
 	{"$LION$bb0489df7b073e715f19f83fd52d08ede24243554450f7159dd65c100298a5820525b55320f48182491b72b4c4ba50d7b0e281c1d98e06591a5e9c6167f42a742f0359c7", "password"},
 	{"$LION$74911f723bd2f66a3255e0af4b85c639776d510b63f0b939c432ab6e082286c47586f19b4e2f3aab74229ae124ccb11e916a7a1c9b29c64bd6b0fd6cbd22e7b1f0ba1673", "hello"},
-	{"$LION$5e3ab14c8bd0f210eddafbe3c57c0003147d376bf4caf75dbffa65d1891e39b82c383d19da392d3fcc64ea16bf8203b1fc3f2b14ab82c095141bb6643de507e18ebe7489", "boobies"},
+	{"5e3ab14c8bd0f210eddafbe3c57c0003147d376bf4caf75dbffa65d1891e39b82c383d19da392d3fcc64ea16bf8203b1fc3f2b14ab82c095141bb6643de507e18ebe7489", "boobies"},
 	{NULL}
 };
 
@@ -72,10 +72,10 @@ static int valid(char *ciphertext, struc
 }
 
 static char *prepare(char *split_fields[10], struct fmt_main *pFmt) {
-	char Buf[100];
+	char Buf[200];
 	if (!strncmp(split_fields[1], "$LION$", 6))
 		return split_fields[1];
-	if (strlen(split_fields[0]) == CIPHERTEXT_LENGTH) {
+	if (split_fields[0] && strlen(split_fields[0]) == CIPHERTEXT_LENGTH) {
 		sprintf(Buf, "$LION$%s", split_fields[0]);
 		if (valid(Buf, pFmt)) {
 			char *cp = mem_alloc_tiny(CIPHERTEXT_LENGTH+7, MEM_ALIGN_NONE);
