bug in regexp(3), and fix

sources-request at panda.UUCP sources-request at panda.UUCP
Fri Feb 7 00:16:21 AEST 1986


Mod.sources:  Volume 3, Issue 105
Submitted by: genrad!decvax!utzoo!henry

Drat!  Chris Siebenmann at CSRI just found a bug in my regexp(3) routines.
The problem is that the code for character classes does not check properly
for the possibility that it might be looking at the end of the string.  By
simple bad luck none of my test cases hit this.  To fix it, make the
following two changes to regexp.c:

848c848
< 			if (strchr(OPERAND(scan), *reginput) == NULL)
---
> 			if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL)
853c853
< 			if (strchr(OPERAND(scan), *reginput) != NULL)
---
> 			if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)

and recompile.  Also, add the following line to the "tests" file:

[k]	ab	n	-	-

My thanks to Chris for finding this.

				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry



More information about the Mod.sources mailing list