test/testutil/driver.c:176: error: UNINITIALIZED_VALUE
  The value read from permute[_] was never initialized.
Showing all 1 steps of the trace


test/testutil/driver.c:176:13: 
174.               j = rand() % (1 + i);
175.               ii = permute[j];
176. >             permute[j] = permute[i];
177.               permute[i] = ii;
178.           }

int run_tests(const char *test_prog_name)
{
    int num_failed = 0;
    char *verdict = NULL;
    int ii, i, jj, j, jstep;
    int permute[OSSL_NELEM(all_tests)];
    if (num_tests < 1) {
        test_printf_stdout("%*s1..0 # Skipped: %s\n", level, "",
                           test_prog_name);
    } else {
        if (level > 0)
            test_printf_stdout("%*s# Subtest: %s\n", level, "", test_prog_name);
        test_printf_stdout("%*s1..%d\n", level, "", num_tests);
    }
    test_flush_stdout();
    for (i = 0; i < num_tests; i++)
        permute[i] = i;
    if (seed != 0)
        for (i = num_tests - 1; i >= 1; i--) {
            j = rand() % (1 + i);
            ii = permute[j];
            permute[j] = permute[i];
            permute[i] = ii;
        }
    for (ii = 0; ii != num_tests; ++ii) {
        i = permute[ii];
        if (all_tests[i].num == -1) {
            int ret = 0;
            set_test_title(all_tests[i].test_case_name);
            ret = all_tests[i].test_fn();
            test_flush_stdout();
            test_flush_stderr();
            verdict = "ok";
            if (!ret) {
                verdict = "not ok";
                ++num_failed;
            }
            test_printf_stdout("%*s%s %d - %s\n", level, "", verdict, ii + 1,
                               test_title);
            test_flush_stdout();
            finalize(ret);
        } else {
            int num_failed_inner = 0;
            level += 4;
            if (all_tests[i].subtest) {
                test_printf_stdout("%*s# Subtest: %s\n", level, "",
                                   all_tests[i].test_case_name);
                test_printf_stdout("%*s%d..%d\n", level, "", 1,
                                   all_tests[i].num);
                test_flush_stdout();
            }
            j = -1;
            if (seed == 0 || all_tests[i].num < 3)
                jstep = 1;
            else
                do
                    jstep = rand() % all_tests[i].num;
                while (jstep == 0 || gcd(all_tests[i].num, jstep) != 1);
            for (jj = 0; jj < all_tests[i].num; jj++) {
                int ret;
                j = (j + jstep) % all_tests[i].num;
                set_test_title(NULL);
                ret = all_tests[i].param_test_fn(j);
                test_flush_stdout();
                test_flush_stderr();
                if (!ret)
                    ++num_failed_inner;
                finalize(ret);
                if (all_tests[i].subtest) {
                    verdict = "ok";
                    if (!ret) {
                        verdict = "not ok";
                        ++num_failed_inner;
                    }
                    if (test_title != NULL)
                        test_printf_stdout("%*s%s %d - %s\n", level, "",
                                           verdict, jj + 1, test_title);
                    else
                        test_printf_stdout("%*s%s %d - iteration %d\n", level,
                                           "", verdict, jj + 1, j + 1);
                    test_flush_stdout();
                }
            }
            level -= 4;
            verdict = "ok";
            if (num_failed_inner) {
                verdict = "not ok";
                ++num_failed;
            }
            test_printf_stdout("%*s%s %d - %s\n", level, "", verdict, ii + 1,
                               all_tests[i].test_case_name);
            test_flush_stdout();
        }
    }
    if (num_failed != 0)
        return EXIT_FAILURE;
    return EXIT_SUCCESS;
}
['int run_tests(const char *test_prog_name)\n{\n    int num_failed = 0;\n    char *verdict = NULL;\n    int ii, i, jj, j, jstep;\n    int permute[OSSL_NELEM(all_tests)];\n    if (num_tests < 1) {\n        test_printf_stdout("%*s1..0 # Skipped: %s\\n", level, "",\n                           test_prog_name);\n    } else {\n        if (level > 0)\n            test_printf_stdout("%*s# Subtest: %s\\n", level, "", test_prog_name);\n        test_printf_stdout("%*s1..%d\\n", level, "", num_tests);\n    }\n    test_flush_stdout();\n    for (i = 0; i < num_tests; i++)\n        permute[i] = i;\n    if (seed != 0)\n        for (i = num_tests - 1; i >= 1; i--) {\n            j = rand() % (1 + i);\n            ii = permute[j];\n            permute[j] = permute[i];\n            permute[i] = ii;\n        }\n    for (ii = 0; ii != num_tests; ++ii) {\n        i = permute[ii];\n        if (all_tests[i].num == -1) {\n            int ret = 0;\n            set_test_title(all_tests[i].test_case_name);\n            ret = all_tests[i].test_fn();\n            test_flush_stdout();\n            test_flush_stderr();\n            verdict = "ok";\n            if (!ret) {\n                verdict = "not ok";\n                ++num_failed;\n            }\n            test_printf_stdout("%*s%s %d - %s\\n", level, "", verdict, ii + 1,\n                               test_title);\n            test_flush_stdout();\n            finalize(ret);\n        } else {\n            int num_failed_inner = 0;\n            level += 4;\n            if (all_tests[i].subtest) {\n                test_printf_stdout("%*s# Subtest: %s\\n", level, "",\n                                   all_tests[i].test_case_name);\n                test_printf_stdout("%*s%d..%d\\n", level, "", 1,\n                                   all_tests[i].num);\n                test_flush_stdout();\n            }\n            j = -1;\n            if (seed == 0 || all_tests[i].num < 3)\n                jstep = 1;\n            else\n                do\n                    jstep = rand() % all_tests[i].num;\n                while (jstep == 0 || gcd(all_tests[i].num, jstep) != 1);\n            for (jj = 0; jj < all_tests[i].num; jj++) {\n                int ret;\n                j = (j + jstep) % all_tests[i].num;\n                set_test_title(NULL);\n                ret = all_tests[i].param_test_fn(j);\n                test_flush_stdout();\n                test_flush_stderr();\n                if (!ret)\n                    ++num_failed_inner;\n                finalize(ret);\n                if (all_tests[i].subtest) {\n                    verdict = "ok";\n                    if (!ret) {\n                        verdict = "not ok";\n                        ++num_failed_inner;\n                    }\n                    if (test_title != NULL)\n                        test_printf_stdout("%*s%s %d - %s\\n", level, "",\n                                           verdict, jj + 1, test_title);\n                    else\n                        test_printf_stdout("%*s%s %d - iteration %d\\n", level,\n                                           "", verdict, jj + 1, j + 1);\n                    test_flush_stdout();\n                }\n            }\n            level -= 4;\n            verdict = "ok";\n            if (num_failed_inner) {\n                verdict = "not ok";\n                ++num_failed;\n            }\n            test_printf_stdout("%*s%s %d - %s\\n", level, "", verdict, ii + 1,\n                               all_tests[i].test_case_name);\n            test_flush_stdout();\n        }\n    }\n    if (num_failed != 0)\n        return EXIT_FAILURE;\n    return EXIT_SUCCESS;\n}']