Подробности

[В начало]

Проблема в реализации № D0022

Краткое описание

Вызов функции "g_utf8_strreverse" при определенных входных параметрах приводит к падению процесса

Подробное описание

Вызов функции g_utf8_strreverse со значениями для параметра "len" из диапазона 0<len<sizeof(str)-1 приводит к искажению памяти и падению процесса.

Раздел стандарта

Linux Standard Base Desktop Specification 3.1, Chapter 12. Libraries, 12.2 Interfaces for libglib-2.0; http://www.gtk.org/api/2.6/glib/glib-Unicode-Manipulation.html#g-utf8-strreverse

Пример

#include <glib.h>

int main()
{
    gchar str[] = "Internet";
    gchar* retValue = g_utf8_strreverse(str,5);
    g_free(retValue);
    return 0;
}

Способы устранения

Предлагается произвести следующие изменения в файле "gutf8.c":

 
--- glib-2.14.0/glib/utf8.c
+++ glib-2.14.0-fixed/glib/utf8.c
@@ -1795,7 +1795,7 @@
   result = g_new (gchar, len + 1);
   r = result + len;
   p = str;
-  while (*p)
+  while (r>result)
     {
       skip = g_utf8_skip[*(guchar*)p];
       r -= skip;

Компонент

gtk-glib 2.6.2 or later

Принято

Gnome Bugzilla 476840

Статус

Исправлено в gtk-glib - 2.14.1

[В начало]