mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-27 14:32:16 +01: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
						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