Abstract namespace connections (Connection refused)

Havoc Pennington hp at pobox.com
Thu Feb 14 15:06:17 PST 2008


Hi,

On Thu, Feb 14, 2008 at 5:18 PM, @4u <fd4u at vplace.de> wrote:
>  What does the D-BUS do? Does it append NUL bytes?

I think not.

>  If a C programmer finds this line:
>
>  memcpy(unix_addr->sun_path, xparam->inputs.name, xparam->inputs.namelen);
>
>  Does it mean that NUL bytes are their or not?

I believe the relevant thing is the length of sockaddr_un passed to
connect() or listen(), rather than this memcpy().

dbus does this:
connect (fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct
sockaddr_un, sun_path) + path_len)

Where path_len is strlen("/tmp/whatever") + 1, the +1 is because
abstract sockets have the leading nul in front.

If the connect() or listen() just does sizeof(struct sockaddr_un) then
it will always get a bunch of trailing garbage bytes in the abstract
name.

Havoc


More information about the dbus mailing list