Add tests for the empty pattern.
authorMatthias Clasen <mclasen@redhat.com>
Thu, 15 Apr 2004 13:58:29 +0000 (13:58 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 15 Apr 2004 13:58:29 +0000 (13:58 +0000)
2004-04-15  Matthias Clasen  <mclasen@redhat.com>

* tests/patterntest.c (main): Add tests for the empty pattern.

* glib/gpattern.c (g_pattern_spec_new): Don't read and write out
of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
Stefan Fent)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gpattern.c
tests/patterntest.c

index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 0f2db6d2d9ab55077b861707c8acc4babd1b60a4..0d550a7d8a7be1fe2c9e2c156499fdc7f51bf8bb 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/patterntest.c (main): Add tests for the empty pattern.
+
+       * glib/gpattern.c (g_pattern_spec_new): Don't read and write out 
+       of bounds when the pattern is empty.  (#140032, Stanislav Brabec,
+       Stefan Fent)
+
 2004-04-10  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_getlocale): Add new language and
index 302c6f75748a4d06f9e671ad8c593b3eaea8d900..68bafe81d87deae496317a9c3956d52ecdb83b4b 100644 (file)
@@ -243,7 +243,8 @@ g_pattern_spec_new (const gchar *pattern)
          pspec->pattern[pspec->pattern_length] = 0;
          return pspec;
        }
-      if (pspec->pattern[pspec->pattern_length - 1] == '*')
+      if (pspec->pattern_length > 0 &&
+         pspec->pattern[pspec->pattern_length - 1] == '*')
        {
          pspec->match_type = G_MATCH_HEAD;
          pspec->pattern[--pspec->pattern_length] = 0;
index f5fd7b2249c1d514515f50c9d847148304f75b4d..6dab50becf2472cc9bdb9c4167a351b149571ed1 100644 (file)
@@ -273,6 +273,8 @@ main (int argc, char** argv)
   TEST_MATCH("ab*", "ab\xc3\xa4\xc3\xb6", TRUE);
   TEST_MATCH("ab*\xc3\xb6", "ab\xc3\xa4\xc3\xb6", TRUE);
   TEST_MATCH("ab*\xc3\xb6", "aba\xc3\xb6x\xc3\xb6", TRUE);
+  TEST_MATCH("", "", TRUE);
+  TEST_MATCH("", "abc", FALSE);
   
   verbose ("\n%u tests passed, %u failed\n", passed, failed);