[cvsnt] CVS crashes when commiting binary files under branchs
Ronaldo Capaverde
capaverde at 3ia.com.br
Tue Feb 13 15:04:52 GMT 2007
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