After getting new Norton Antivirus virus definitions last night, NAV suddenly reported this morning that my old cygwin1.dll was infected with what appears to be a new trojan program, and aborted a cvs checkin I was doing to a remote server. This was almost certainly a false positive but I didn't figure that out until later. Being in a hurry, I started a download/install of the latest cygwin and went off for a couple of hours. When I got back, I went through the virus description in detail, a full virus scan etc (which found problems with various old cygwin1.dll files embedded in the .tar.gz packages for the old releases). As none of the expected symptoms of infection appeared, I decided the alarm was false, but now cvs didn't work.
After a cosmic struggle, including running the debugger on cvs 1.11, it turns out that cvs was opening all its admin files, such as CVS/Root or CVS/Repository in text mode ("r" not "rb"), and stripping off '\n' and trailing spaces from the lines containing directories, but not '\r'. So when it sent its value of $CVSROOT, it sent something like ":ext:....../home/cvspub\r/CVSROOT" and lookups would fail. Something would be wrong with every directory reference concatenated out of information in these files as it walked the tree for any cvs command. By reinstalling cvs but specifying Default Text File Type = DOS in the main setup dialog, and making sure that binmode was not set in the CYGWIN environment variable, cvs now had the right behavior when it read its files. Clearly, the various cvs administrative files had been produced in DOS text mode using the earlier cygwin releases, but the new release, which I had originally installed without changing any default settings, apparently uses Unix mode by default. Apparently if you read a DOS text mode file in a DOS text mode environment, the '\r' characters automatically are removed before they reach the program buffer, but if you read such a file in Unix text mode, the '\r' characters are not treated specially. Has there been a recent change of this default? If so, its consequences should be pointed out to people who might be victimized in an upgrade. I think it would be useful to update the cygwin faq with some well-chosen advice about how to deal with DOS vs. Unix text file formats, particularly pointing out that some of the programs in the cygwin release will only work in DOS text mode if they were ever installed in DOS Text mode and wrote any files. It would also be helpful if there was a better explanation than what I've found so far about the meaning of this setting in the setup dialogs. What is actually changed by altering it? The first time I tried to fix the problem by starting setup, changing the setting from Unix text mode to DOS text mode, and continuing, I was told "There is nothing to install." I had to explicitly select cvs and specify Reinstall to cause a change. Presumably what I've done is partly bogus. I should reinstall everything with a consistent text mode setting, right, or some other programs will be broken similarly to the way cvs was? Jeff
cygcheck.out
Description: Binary data
-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/