[dev] [surf][bug] bug in pipe communication to extension

From: Jona Ackerschott <jona.a99_AT_gmail.com>
Date: Sat, 17 Oct 2020 09:53:47 +0200

Dear suckless community,

There seems to be a bug in surf, in the 'readpipe' function in surf.c.
The pipes for communication with the web extension are being closed
there in the switch statement, which is problematic, because this function is called every time
the web extension is initialized.
This desing seems to be chosen on the assumption that the surf web extension
will only be initialized once.
However, this is not the case and as soon as the web extension gets
initialized a second time the current page may be loading forever.

To reproduce this bug, execute mainline surf without patches, go to 'google.com'
(Exactly this, combinations of 'http(s)' or 'www' added to this
can change the behaviour) and then to 'twitter.com' (Again extactly this).
These sites are just one example, this also happens with other sites,
mostly pretty bloated ones.
You should see that 'twitter.com' is not loading and the error messages
'webext: error sending: i', 'webext: message too short: %i' (where %i is
some negative integer).
There is also a variation of this bug, where you find only the first
error message and the page is loading in a finite amount of time.

I think all this behaviour can be traced back to the fact, that the
pipes are being closed to early in readpipe, because they could be
needed again.
A fix could be to let those pipes open during runtime and only close
them in the 'cleanup' function.
At least this fixes all the problems i have talked about.

Regards,
Jona
Received on Sat Oct 17 2020 - 09:53:47 CEST

This archive was generated by hypermail 2.3.0 : Sat Oct 17 2020 - 10:00:09 CEST