> On Jun 13, 2018, at 11:11, Theo de Raadt <[email protected]> wrote:
> 
> Rafael Sadowski <[email protected]> wrote:
> 
>> Switch off retguard in qtwebkit fix the crashes above.
>> 
>> Please find below a diff to disbale retguard for qtwebkit and respect
>> CC/CXX in Qt.
> 
> This diff misses the point.  The problem should be looked at a little
> deeper.
> 
> retguard is a stack-corruption detector.  The return address isn't
> what is expected.  This looks like an interface where JIT and non-JIT
> code touch, perhaps by adjusting the return address on the stack without
> being aware it needs an XOR.  Maybe the XOR cookie be discovered by
> XOR'ing the previous return value if that is known, to re-apply it to
> the new ret value.

If this is indeed an instance of the return address being deliberately modified 
between function entry and exit then that will be hard to fix so the program 
can update the cookie on stack so the check passes. In this case the easiest 
thing to do is disable retguard as this diff does. Chromium doesn’t have this 
problem though, but maybe earlier versions of webkit did this and qtwebkit is 
based on those. 

If this is the cookie value being corrupted then that would indicate a bug in 
the program that is being triggered by the stack frame being adjusted to make 
space for the retguard cookie.

I don’t know how hard it is to attach a debugger to this and see if the return 
address is being modified or if the cookie is being corrupted. 

> 
> Aren't you a little curious?
> 
> Also -- with your diff, is the old -fstack-protector(-strong) enabled
> or disabled?  I think it is disabled.

Disabling retguard does not disable the stack protector, so whatever stack 
protector is enabled by the usual makefile will continue to apply. 

Reply via email to