Bug#175529: re_compile_pattern bug
Thanks for looking into that and for the fix!
Tim Waugh suggested the same thing a few days ago:
Index: m4/regex.m4
===================================================================
RCS file: /fetish/cu/m4/regex.m4,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -p -u -r1.26 -r1.27
--- m4/regex.m4 12 Aug 2001 13:26:00 -0000 1.26
+++ m4/regex.m4 16 Jan 2003 17:33:52 -0000 1.27
@@ -1,4 +1,4 @@
-#serial 12
+#serial 13
dnl Initially derived from code in GNU grep.
dnl Mostly written by Jim Meyering.
@@ -22,6 +22,7 @@ AC_DEFUN([jm_INCLUDED_REGEX],
jm_cv_func_working_re_compile_pattern,
AC_TRY_RUN(
[#include <stdio.h>
+#include <string.h>
#include <regex.h>
int
main ()
@@ -30,12 +31,14 @@ AC_DEFUN([jm_INCLUDED_REGEX],
const char *s;
struct re_registers regs;
re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ memset (®ex, 0, sizeof (regex));
[s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);]
/* This should fail with _Invalid character class name_ error. */
if (!s)
exit (1);
/* This should succeed, but doesn't for e.g. glibc-2.1.3. */
+ memset (®ex, 0, sizeof (regex));
s = re_compile_pattern ("{1", 2, ®ex);
if (s)
@@ -43,6 +46,7 @@ AC_DEFUN([jm_INCLUDED_REGEX],
/* The following example is derived from a problem report
against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
+ memset (®ex, 0, sizeof (regex));
s = re_compile_pattern ("[[anù]]*n", 7, ®ex);
if (s)
exit (1);
FYI, GNU libc's regex code has just been changed so that it leaves
the affected members in a sane state, so the above initializations
would no longer be necessary.
2003-01-16 Jakub Jelinek <jakub@redhat.com>
* posix/regcomp.c (re_compile_internal): If clearing buffer, clear
allocated too. Reported by Al Viro <aviro@redhat.com>.
Reply to: