[webkit-help] NPAPI plugin crashes while calling npnfuncs->invoke in GtkLauncher

Vanya Yani iyani at luxoft.com
Thu Mar 15 14:57:14 PDT 2012

Seems like gmail doesn't auto-cc mailing lists when replying. Sad :(

>  char* message = (char *)"Hello from wcfplugin......";
>  // Get window object.
>  err = npnfuncs->getvalue(npp_, NPNVWindowNPObject, &window);
>  printf("getvalue:err:%d\n",err);

So far, so good. But the error check is missing.

>  // Get console object.
>  id = npnfuncs->getstringidentifier("content");
>  err = npnfuncs->getproperty(npp_, window, id, &consoleVar);
>  printf("getproperty:err:%d\n",err);

I see that your intention is to get "window.console", but you actually
get "window.content". I think, now your err is NPERR_GENERIC_ERROR and
your consoleVar has some random (or 0) value. I'm surprised, why you
need a printf here if you didn't even checked its output.

And since there is no error check (again!), you can't do the next:

>  NPObject* console = NPVARIANT_TO_OBJECT(consoleVar);

Now you have a pointer to some random location (or just a null pointer).

>  id = npnfuncs->getstringidentifier("func");

Does console object really has "func" function? You might want to call
console.log("some message").

>  err = npnfuncs->invoke(npp_, console, id, args_temp,
>             sizeof(args_temp) / sizeof(args_temp[0]),
>             &voidResponse);

No surprise that this will crash a browser. Don't know how it doesn't
crash in Firefox. Maybe you're lucky :)

Crash happens here:

211         if (o->_class == NPScriptObjectClass) {

So it might be a webkit fault that it doesn't check if your pointer is
null, but you shouldn't pass it in the first place.

When I change "content" to "console" and "func" to "log", I see a nice
console message:

** Message: console message:  @0: Hello from wcfplugin......

Error checking is important. Be more attentive next time.

More information about the webkit-help mailing list