[Telepathy] [PATCH] Fix crashes in FileTransfer and StreamTubes related to SocketAddressIPv4
Dario Freddi
drf54321 at gmail.com
Mon May 3 12:11:57 PDT 2010
On Monday 03 May 2010 20:54:17 Simon McVittie wrote:
> Does telepathy-qt4 actually *crash* when the type is not as expected, or
> just not work? If it crashes, that's a separate bug (D-Bus applications
> shouldn't crash, regardless of what they receive from D-Bus). If it just
> doesn't work, that's OK.
Tp-Qt4 actually crashes, but *not* due to QtDBus. qdbus_cast, by default,
returns a null pointer if the cast does not succeed. This means that the
structure is referring to a null pointer and hence triggers a crash as soon as
it gets accessed. So QtDBus is not leading to a crash - hence my proposal for
the workaround using 2 different structs.
For now, we can simply push a quick fix which avoid the crash - which is just
checking if *addr == 0.
>
> On Mon, 03 May 2010 at 20:18:18 +0200, Dario Freddi wrote:
> > It would be a workaround changing the spec _only_ in tp-qt4, where we
> > would actually end up having an inconsistency.
>
> Right, if telepathy-qt4's spec/ directory differs from the official
> language-neutral one in telepathy-spec then that's a bug.
>
> The problem is that telepathy-glib claims to implement the language-neutral
> spec, but can't (because dbus-glib can't); so either we need to change the
> language-neutral spec to what we've (in practice) always implemented, or
> special-case the 16-bit types.
>
> Changing telepathy-spec would break interop with any CM that implements the
> spec as written, but I don't think we have any non-GLib connection managers
> that do File Transfer or Tubes, so the worst that can happen is that
> avatar requirements from the Python CMs (Butterfly, Sunshine etc.) are
> broken.
Yeah, I agree completely - also consider that we can change only the methods
which return a q. Passing a q as an argument is not a problem, even if the day
a CM gets written with tp-qt4, the above assumption is no longer true. So the
long term solution is changing q->u everywhere in the spec.
>
> > The real solutions are:
> > * Apply my changes to the whole Telepathy spec
> > * Fix dbus-glib and make all CM adhere to the spec
> >
> > If both of them are not possible, I can add a real workaround, which
> > consists in adding another structure with signature (su) as a private
> > type, and cast to that structure if casting to (sq) fails.
>
> Fixing dbus-glib isn't really feasible either (it'd be an ABI break in
> dbus-glib!), so we either dig up my branch from fd.o #20776 or your
> presumably-equivalent changes (i.e. change telepathy-spec to match what we
> always implemented in GLib-land), or work around the few current 16-bit
> types in telepathy-qt4 and avoid adding any more, or both.
Ok - let me know what the final decision will be, so we can act accordingly :)
>
> > IMHO, using a different spec for tp-qt4 and tp-glib is asking for trouble
>
> Yes, I agree. The problem is that Telepathy happened first in GLib and
> Python; dbus-glib is unable to implement the language-neutral spec as
> designed, but because Python is extremely permissive about types, nobody
> noticed.
>
> Simon
> _______________________________________________
> telepathy mailing list
> telepathy at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/telepathy
--
-------------------
Dario Freddi
KDE Developer
GPG Key Signature: 511A9A3B
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/telepathy/attachments/20100503/bca5e37d/attachment.pgp>
More information about the telepathy
mailing list