about summary refs log tree commit diff
path: root/posix/bug-regex31.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2010-10-11 12:34:53 -0400
committerPetr Baudis <pasky@suse.cz>2010-11-09 02:38:07 +0100
commit153501dc10cd4e5c9aa5084c1526fff7448b8854 (patch)
treece47fd500ea67705aaeba107380fedd017a929e0 /posix/bug-regex31.c
parent8a69e300d5529d84bff72b17eeaaf9140e44052d (diff)
downloadglibc-153501dc10cd4e5c9aa5084c1526fff7448b8854.tar.gz
glibc-153501dc10cd4e5c9aa5084c1526fff7448b8854.tar.xz
glibc-153501dc10cd4e5c9aa5084c1526fff7448b8854.zip
More regex memory leak fixes and testcases
(cherry picked from commit ef06edbee6463061a7f3dcbd2f56a625b41a4810)
(cherry picked from commit e9b9cbf5e9bdcda6f0b50456658bac748202dd70)
Diffstat (limited to 'posix/bug-regex31.c')
-rw-r--r--posix/bug-regex31.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/posix/bug-regex31.c b/posix/bug-regex31.c
new file mode 100644
index 0000000000..974e8603b9
--- /dev/null
+++ b/posix/bug-regex31.c
@@ -0,0 +1,36 @@
+#include <mcheck.h>
+#include <regex.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+int
+main (void)
+{
+  mtrace ();
+
+  int res = 0;
+  char *buf = NULL;
+  size_t len = 0;
+  while (! feof (stdin))
+    {
+      ssize_t n = getline (&buf, &len, stdin);
+      if (n <= 0)
+	break;
+      if (buf[n - 1] == '\n')
+	buf[n - 1] = '\0';
+
+      regex_t regex;
+      int rc = regcomp (&regex, buf, REG_EXTENDED);
+      if (rc != 0)
+	printf ("%s: Error %d (expected)\n", buf, rc);
+      else
+	{
+	  printf ("%s: succeeded !\n", buf);
+	  res = 1;
+	}
+    }
+
+  free (buf);
+
+  return 0;
+}