• Erkki Seppälä's avatar
    record: avoid crash when calling RecordFlushReplyBuffer recursively · c8a4e1e7
    Erkki Seppälä authored
    Backported from X.Org:
    
    commit 0801afbd7c2c644c672b37f8463f1a0cbadebd2e
    Author: Erkki Seppälä <erkki.seppala@vincit.fi>
    Date:   Thu Feb 10 15:35:14 2011 +0200
    
        record: avoid crash when calling RecordFlushReplyBuffer recursively
    
        RecordFlushReplyBuffer can call itself recursively through
        WriteClient->CallCallbacks->_CallCallbacks->RecordFlushAllContexts
        when the recording client's buffer cannot be completely emptied in one
        WriteClient. When a such a recursion occurs, it will not be broken out
        of which results in segmentation fault when the stack is exhausted.
    
        This patch adds a counter (a flag, really) that guards against this
        situation, to break out of the recursion.
    
        One alternative to this change would be to change _CallCallbacks to
        check the corresponding counter before the callback loop, but that
        might affect existing behavior, which may be relied upon.
    Reviewed-by: 's avatarRami Ylimäki <rami.ylimaki@vincit.fi>
    Signed-off-by: 's avatarErkki Seppälä <erkki.seppala@vincit.fi>
    Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
    Backported-to-NX-by: 's avatarMihai Moldovan <ionic@ionic.de>
    
    Fixes: ArcticaProject/nx-libs#417.
    c8a4e1e7
record.c 86.7 KB