Comment 2 for bug 667386

Revision history for this message
Jeff Hill (johill-lanl) wrote :

This code in camessage.c looks sketchy. It seems that the else part of the if clause does not consider where stk is, and could push stk to be greater than cnt.

    if ( client->recvBytesToDrain ) {
        if ( client->recvBytesToDrain >= client->recv.cnt ) {
            client->recvBytesToDrain -= client->recv.cnt;
            client->recv.stk = client->recv.cnt;
            return RSRV_OK;
        }
        else {
            client->recv.stk += client->recvBytesToDrain;
            client->recvBytesToDrain = 0u;
        }
    }