Package: pgapack Version: 1.0.0.1-3 Severity: important Tags: patch PGAIntegerMutation() includes a potential off-by-one error when it selects the array index 'j' in the PGA_MUTATION_PERMUTE case.
According to the documentation PGARandomInterval(ctx, begin, end) returns an integer in [begin, end]. As I experienced it, 'j' can be assigned with the value ctx->ga.StringLen here. The patch below fixes this. --- pgapack-1.0.0.1/source/integer.c.orig Tue Oct 11 18:36:47 2005 +++ pgapack-1.0.0.1/source/integer.c Tue Oct 11 18:36:47 2005 @@ -470,7 +470,7 @@ break; case PGA_MUTATION_PERMUTE: /* could check for j == i if we were noble */ - j = PGARandomInterval(ctx, 0, ctx->ga.StringLen); + j = PGARandomInterval(ctx, 0, ctx->ga.StringLen - 1); temp = c[i]; c[i] = c[j]; c[j] = temp; -- System Information: Debian Release: 3.1 APT prefers testing APT policy: (1, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.11-1-686 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]