[Pkg-gmagick-im-team] Bug#834163: libmagick++: undefined behavior on concurrent access because mutex locking is poorly done
Guillaume Gimenez
guillaume at blackmilk.fr
Fri Aug 12 21:32:43 UTC 2016
Le 12/08/2016 à 22:44, Bastien ROUCARIES a écrit :
> On Fri, Aug 12, 2016 at 6:16 PM, Guillaume Gimenez <ploki at blackmilk.fr> wrote:
>> Package: libmagick++-6.q16-5v5
>> Version: 8:6.8.9.9-7.2
>> Severity: important
>> File: libmagick++
>> Tags: patch
>>
>> Dear Maintainer,
>>
>> There is a bug in the locking implentation (RAII was the intended C++ idiom) that has been fixed upstream.
>>
>> http://git.imagemagick.org/repos/ImageMagick/commit/5cbe21ed2728da0e611154d2f8e41bb63095a62c
>>
>> Unfortunately, the commit message is empty...
>>
>> In the unfixed code, the mutex acquisition has no effect and doesn't prevent concurrent access to ref counters.
>>
>> This bug generates a lot of crashes when Magick++ is used with multi-threaded applications
>
> Do you have a small test case ?
>
> If so it is a security bug. Could you ask for a CVE ?
>
> Bastien
Of course here it is
I spotted this bug with a program I am developing
https://github.com/ploki/darkflow
Since it doesn’t look like a minimal test case I wrote this small test
program which triggers the bug on im 6.8 but doesn’t on im 6.9 which has
the fix applied.
$ cat bug.cc
#include <Magick++.h>
using namespace Magick;
int main(int argc, char **argv)
{
Image plop("/usr/share/pixmaps/debian-logo.png");
#pragma omp parallel for
for (int i = 0 ; i < 10000 ; ++i )
{
Image meh(plop);
}
return 0;
}
$ g++ -fopenmp $(pkg-config --cflags --libs Magick++) bug.cc -o bug
$ ./bug
bug: ../../magick/image.c:1106: DestroyImageInfo: Assertion
`image_info->signature == 0xabacadabUL' failed.
Aborted
$ ./bug
bug: ../../magick/image.c:1106: DestroyImageInfo: Assertion
`image_info->signature == 0xabacadabUL' failed.
terminate called after throwing an instance of 'Magick::ErrorOption'
what(): Magick: mutex lock failed (Invalid argument)
Aborted
crash may vary depending on which race is triggered.
Regards,
Guillaume
>>
>>
>> -- System Information:
>> Debian Release: stretch/sid
>> APT prefers testing
>> APT policy: (990, 'testing'), (500, 'stable-updates'), (500, 'stable')
>> Architecture: amd64 (x86_64)
>>
>> Kernel: Linux 4.6.0-1-amd64 (SMP w/2 CPU cores)
>> Locale: LANG=en_US.UTF-8, LC_CTYPE=UTF-8 (charmap=locale: Cannot set LC_CTYPE to default locale: No such file or directory
>> locale: Cannot set LC_ALL to default locale: No such file or directory
>> ANSI_X3.4-1968)
>> Shell: /bin/sh linked to /bin/dash
>> Init: systemd (via /run/systemd/system)
>>
>> Versions of packages libmagick++-6.q16-5v5:amd64 depends on:
>> ii libc6 2.23-4
>> ii libgcc1 1:6.1.1-10
>> ii libmagickcore-6.q16-2 8:6.8.9.9-7.2
>> ii libmagickwand-6.q16-2 8:6.8.9.9-7.2
>> ii libstdc++6 6.1.1-10
>>
>> libmagick++-6.q16-5v5:amd64 recommends no packages.
>>
>> libmagick++-6.q16-5v5:amd64 suggests no packages.
>>
More information about the Pkg-gmagick-im-team
mailing list