diff --git a/ChangeLog b/ChangeLog
index 8cb92085e0a6896a3cdb018e061595c2d1d47a38..8b430037b82f8cab4dfc05d14d8277cd71f35a33 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-16  Niels Möller  <nisse@lysator.liu.se>
+
+	* tools/parse.c (sexp_parse): Fail with an error message for
+	unexpected ']' characters. Fixes crash reported by Hanno Böck.
+	Also handle SEXP_DISPLAY (internal error) explicitly, without a
+	default clause.
+
 2016-01-28  Niels Möller  <nisse@lysator.liu.se>
 
 	* Released nettle-3.2.
diff --git a/tools/parse.c b/tools/parse.c
index 008f3f14fa8073636e4e22d7691fcb1dd5dff42b..388139ad89ac0672f6746dd8a004778928c15e83 100644
--- a/tools/parse.c
+++ b/tools/parse.c
@@ -165,7 +165,10 @@ sexp_parse(struct sexp_parser *parser,
 	case SEXP_CODING_END:
 	  die("Unexpected end of transport encoding.\n");
 	  
-	default:
+	case SEXP_DISPLAY_END:
+	  die("Unexpected end of display tag.\n");
+
+	case SEXP_DISPLAY:
 	  /* Internal error. */
 	  abort();
 	}