dbus crashing with no environment
Daniel P. Berrange
dan at berrange.com
Tue Nov 25 07:59:53 PST 2008
On Tue, Nov 25, 2008 at 03:18:40PM +0000, Bastien Nocera wrote:
> Heya,
>
> I was trying to see why fprintd was crashing when using the service
> activation, and Richard mentioned that I should try clearing the
> environment as that's what the activation helper does.
>
> I don't actually need any environment in fprintd, so went ahead with it,
> and ended up with crashes in dbus itself. fprintd uses dbus-glib, but I
> was able to reproduce with the attached DBus-only test case.
This does not appear to be neccessarily dbus's fault - change your
demo program to just be
#include <stdlib.h>
int main (int argc, char **argv)
{
clearenv ();
unsetenv("FOO");
return 0;
}
And it'll also crash & burn the same way:
==14998== Invalid read of size 4
==14998== at 0xB3A53F: unsetenv (setenv.c:295)
==14998== by 0x4008326: unsetenv (mc_replace_strmem.c:760)
==14998== by 0x8048415: main (env.c:6)
==14998== Address 0x0 is not stack'd, malloc'd or (recently) free'd
So its arguably a bug in libc's unsetenv(), but we could guard against
it in DBus by making the dbus_setenv do
if (getenv("FOO")) unsetenv("FOO");
Instead of calling unsetenv() unconditionally.
Regards,
Daniel
--
|: http://berrange.com/ -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://freshmeat.net/~danielpb/ -o- http://gtk-vnc.sourceforge.net :|
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.freedesktop.org/archives/dbus/attachments/20081125/e184a7b5/attachment.pgp
More information about the dbus
mailing list