Public bug reported:

In file src/xlibi18n/lcConv.c the following linked list head is defined

static XlcConverterList conv_list = NULL;

Which is then modified by _XlcSetConverter and get_converter in a non
thread-safe manner. Inside get_converter the list is reorderder to
increase the efficiency of looking up the same element the next time,
but this is especially dangerous since a seemingly read-only method is
actually modifying the data.

Modifying the list in such thread unsafe manner does case the list to
become garbled in some workloads and causes infinite loops when the
get_converter is invoked. The solution I suggest is to add a mutex or
spinlock around accesses to the linked list, I would it myself but I'm
not sure about what is the usual mutex implementation for this project.

** Affects: xlibs
     Importance: Unknown
         Status: Unknown

** Affects: libx11 (Ubuntu)
     Importance: Undecided
         Status: New

** Bug watch added: freedesktop.org Bugzilla #55678
   https://bugs.freedesktop.org/show_bug.cgi?id=55678

** Also affects: xlibs via
   https://bugs.freedesktop.org/show_bug.cgi?id=55678
   Importance: Unknown
       Status: Unknown

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1062534

Title:
  Type unsafe access to internal linked list

To manage notifications about this bug go to:
https://bugs.launchpad.net/xlibs/+bug/1062534/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to