[cvsnt] CVS crashes when commiting binary files under branchs

Ronaldo Capaverde capaverde at 3ia.com.br
Tue Feb 13 15:04:52 GMT 2007


Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


We had detected that under some conditions, CVSNT crashes when commit files.
These are the conditions:
* binary files
* commiting to a branch
* auditing trigger active
* CVSNT version 2.5.03.2260

We had tracked down the problem to the following line, at audit_trigger.cpp:

if (file)
{
    g_diffStore[file].added=added;
    g_diffStore[file].removed=removed;
    // return 0 - no diff (rcsdiff not called)
    // return 1 - Unified diff
    if(g_AuditLogDiffs && (added || removed) && (!options ||
!strchr(options,'b')))
        return 1;
}

It's around line 405, inside the prercsdiff function. The problem is not
being caused here. It's just where the crash happens.
When the conditions stated above are met, the "file" variable assumes the
value "2". It's an invalid pointer, of course, and it will cause CVSNT to
crash, preventing commit to work.
The first workaround we implemented was to deactivate the audit trigger when
some developer needed to commit a binary file in a branch.
Temporarily, we implemented a second workaround, testing the pointer to be
greater than 64K (we are running CVS under Windows and in this OS, there is
no valid address bellow 64K).
We gonna find the root cause of this crash inside the main CVS code.
If someone else had fixed this problem, please, let me know.

-- 
Ronaldo Capaverde
Execução Gestão e Consultoria em Informática
Fone 55 51 8116-7306


More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook