On Wed, Oct 24, 2012 at 10:29 PM, Ping Cheng <pingli...@gmail.com> wrote:
> On Wednesday, October 24, 2012, Jason Gerecke wrote:
>>
>> On Wed, Oct 24, 2012 at 12:20 AM, Peter Hutterer
>> <peter.hutte...@who-t.net> wrote:
>> > An xorg.conf InputDevice section that does not have Option Type set is
>> > invalid. Skip the type assignment and return, triggering an error about
>> > an
>> > invalid type lateron.
>
>
>  I think the above comments reflect a valid reaction of the driver to an
> invalid xorg.conf section. The part that I miss is how to link it to the
> description below.
>
>> >
>> > Fixes crash triggered as of xf86-input-wacom-0.17.0-8-g0debde6 by having
>> > an
>> > InputDevice section like this:
>> >
>> > Section "InputDevice"
>> >     Identifier "--device--"
>> >     Driver "wacom"
>> >     Option "CorePointer" "on"
>> > EndSection
>> >
>> > This would lead to the device being assigned a type and assumed to be
>> > for
>> > hotplugging. Later, when the device attributes are duplicated during
>> > QueueHotplug, asprintf() tries to duplicate attr->product, which is
>> > always
>> > NULL for xorg.conf devices.
>> >
>> > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
>> > ---
>> > Full config for the lazy :)
>> >
>> > Section "ServerLayout"
>> >     Identifier "Dummy layout"
>> >     Option "AutoAddDevices" "off"
>> >     Screen 0 "dummy screen" 0 0
>> >     InputDevice "--device--"
>> > EndSection
>> >
>> > Section "ServerFlags"
>> >      Option "Log" "flush"
>> > EndSection
>> >
>> > Section "Device"
>> >     Identifier "dummy"
>> >     Driver "dummy"
>> > EndSection
>> >
>> > Section "Screen"
>> >     Identifier "dummy screen"
>> >     Device "dummy"
>> > EndSection
>> >
>> > Section "InputDevice"
>> >     Identifier "--device--"
>> >     Driver "wacom"
>> >     Option "CorePointer" "on"
>> > EndSection
>> >
>> > Running 9f896f4800593c7fa232e40fd934b7f51d0dde6d (0.17.99.1) with that
>> > config
>> > file below crashes the server immediately. git bisect pointed to
>> > xf86-input-wacom-0.17.0-8-g0debde6, but that seems to just trigger the
>> > bug,
>> > it's not the direct cause of it.
>> >
>> >  src/wcmValidateDevice.c | 3 +++
>> >  1 file changed, 3 insertions(+)
>> >
>> > diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c
>> > index 658092b..bc5ad44 100644
>> > --- a/src/wcmValidateDevice.c
>> > +++ b/src/wcmValidateDevice.c
>> > @@ -578,6 +578,9 @@ int wcmNeedAutoHotplug(InputInfoPtr pInfo, const
>> > char **type)
>> >         if (*type) /* type specified, don't hotplug */
>> >                 return 0;
>> >
>> > +       if (!source) /* xorg.conf device, don't auto-pick type */
>> > +               return 0;
>> > +
>
>
> I am too lazy to read the whole routine/code. I guess this dummy --device--
> will be ignored and some message indicating invalid xorg.conf options will
> be posted. Then, a solution to make the device usable for the dummy user
> would be to add it through hot plugging.
>
> Or, maybe we do not want to make the dummy feel good :)?

I wondered the same thing initially too. After the function returns
zero to wcmConfig.c:wcmPreInit(), the next line calls wcmIsAValidType,
which fails because NULL isn't a valid type. The error message is
printed, and the "if" statement the call is embedded in is satisfied
since we have a statically-defined device with a bad type. This whisks
us off to SetupProc_fail to keep us from bombing out later on.

Jason

---
When you're rife with devastation / There's a simple explanation:
You're a toymaker's creation / Trapped inside a crystal ball.
And whichever way he tilts it / Know that we must be resilient
We won't let them break our spirits / As we sing our silly song.

>
> Ping
>
>>
>> >         if (source && strcmp(source, "server/hal") && strcmp(source,
>> > "server/udev"))
>> >                 return 0;
>> >L
>> > --
>> > 1.7.11.7
>> >

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to