mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-08 18:24:04 +02:00
Don't read beyond len. (#322520, Christian Persch)
2005-11-27 Matthias Clasen <mclasen@redhat.com> * glib/gunicollate.c (g_utf8_collate_key_for_filename): Don't read beyond len. (#322520, Christian Persch)
This commit is contained in:
committed by
Matthias Clasen
parent
9adc9c942d
commit
bb5ce4b2d3
@@ -1,3 +1,8 @@
|
|||||||
|
2005-11-27 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* glib/gunicollate.c (g_utf8_collate_key_for_filename):
|
||||||
|
Don't read beyond len. (#322520, Christian Persch)
|
||||||
|
|
||||||
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
* glib/gdataset.c: access datalist flags via atomic pointer access
|
* glib/gdataset.c: access datalist flags via atomic pointer access
|
||||||
|
@@ -1,3 +1,8 @@
|
|||||||
|
2005-11-27 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* glib/gunicollate.c (g_utf8_collate_key_for_filename):
|
||||||
|
Don't read beyond len. (#322520, Christian Persch)
|
||||||
|
|
||||||
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
* glib/gdataset.c: access datalist flags via atomic pointer access
|
* glib/gdataset.c: access datalist flags via atomic pointer access
|
||||||
|
@@ -1,3 +1,8 @@
|
|||||||
|
2005-11-27 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* glib/gunicollate.c (g_utf8_collate_key_for_filename):
|
||||||
|
Don't read beyond len. (#322520, Christian Persch)
|
||||||
|
|
||||||
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
* glib/gdataset.c: access datalist flags via atomic pointer access
|
* glib/gdataset.c: access datalist flags via atomic pointer access
|
||||||
|
@@ -298,6 +298,7 @@ g_utf8_collate_key_for_filename (const gchar *str,
|
|||||||
GString *append;
|
GString *append;
|
||||||
const gchar *p;
|
const gchar *p;
|
||||||
const gchar *prev;
|
const gchar *prev;
|
||||||
|
const gchar *end;
|
||||||
gchar *collate_key;
|
gchar *collate_key;
|
||||||
gint digits;
|
gint digits;
|
||||||
gint leading_zeros;
|
gint leading_zeros;
|
||||||
@@ -354,8 +355,10 @@ g_utf8_collate_key_for_filename (const gchar *str,
|
|||||||
result = g_string_sized_new (len * 2);
|
result = g_string_sized_new (len * 2);
|
||||||
append = g_string_sized_new (0);
|
append = g_string_sized_new (0);
|
||||||
|
|
||||||
|
end = str + len;
|
||||||
|
|
||||||
/* No need to use utf8 functions, since we're only looking for ascii chars */
|
/* No need to use utf8 functions, since we're only looking for ascii chars */
|
||||||
for (prev = p = str; *p != '\0'; p++)
|
for (prev = p = str; p < end; p++)
|
||||||
{
|
{
|
||||||
switch (*p)
|
switch (*p)
|
||||||
{
|
{
|
||||||
@@ -406,10 +409,8 @@ g_utf8_collate_key_for_filename (const gchar *str,
|
|||||||
digits = 1;
|
digits = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
while (++p < end)
|
||||||
{
|
{
|
||||||
p++;
|
|
||||||
|
|
||||||
if (*p == '0' && !digits)
|
if (*p == '0' && !digits)
|
||||||
++leading_zeros;
|
++leading_zeros;
|
||||||
else if (g_ascii_isdigit(*p))
|
else if (g_ascii_isdigit(*p))
|
||||||
@@ -427,7 +428,6 @@ g_utf8_collate_key_for_filename (const gchar *str,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (*p != '\0');
|
|
||||||
|
|
||||||
while (digits > 1)
|
while (digits > 1)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user