]> granicus.if.org Git - postgresql/commitdiff
Validate number of steps specified in permutation
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 11 Jan 2012 21:46:18 +0000 (18:46 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 11 Jan 2012 21:48:59 +0000 (18:48 -0300)
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

index 38f1e78dc5cab7d7d42762fb29b0365565269d0d..1d339e9c577c506c28641a9bbb4dd74ed72fd8dd 100644 (file)
@@ -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();
                        }
                }