From 50363c8f86f89fe611ba417575218978917f1ac0 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Wed, 11 Jan 2012 18:46:18 -0300
Subject: [PATCH] Validate number of steps specified in permutation

A permutation that specifies more steps than defined causes
isolationtester to crash, so avoid that.  Using less steps than defined
should probably not be a problem, but no spec currently does that.
---
 src/test/isolation/isolationtester.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/test/isolation/isolationtester.c b/src/test/isolation/isolationtester.c
index 38f1e78dc5..1d339e9c57 100644
--- a/src/test/isolation/isolationtester.c
+++ b/src/test/isolation/isolationtester.c
@@ -395,6 +395,12 @@ run_named_permutations(TestSpec * testspec)
 		Permutation *p = testspec->permutations[i];
 		Step	  **steps;
 
+		if (p->nsteps != nallsteps)
+		{
+			fprintf(stderr, "invalid number of steps in permutation %d\n", i + 1);
+			exit_nicely();
+		}
+
 		steps = malloc(p->nsteps * sizeof(Step *));
 
 		/* Find all the named steps from the lookup table */
@@ -404,7 +410,8 @@ run_named_permutations(TestSpec * testspec)
 										 sizeof(Step *), &step_bsearch_cmp));
 			if (steps[j] == NULL)
 			{
-				fprintf(stderr, "undefined step \"%s\" specified in permutation\n", p->stepnames[j]);
+				fprintf(stderr, "undefined step \"%s\" specified in permutation\n",
+						p->stepnames[j]);
 				exit_nicely();
 			}
 		}
-- 
2.40.0