Looking at Bugzilla bug 446 and the msdn, it would appear (and testing confirms) that:
rc = SetFileAttributes("fff", FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_READONLY );
_is_ valid and sets readonly. In the msdn "However, all other values override FILE_ATTRIBUTE_NORMAL."
The wine code (files\file.c) prints a fixme if anything is set alongside attribute_normal: if (attributes & FILE_ATTRIBUTE_NORMAL) { attributes &= ~FILE_ATTRIBUTE_NORMAL; if (attributes) FIXME("(%s):%lx illegal combination with FILE_ATTRIBUTE_NORMAL.\n", lpFileName,attributes); }
I would suggest a trace point rather than a fixme or remove this check altogether
As to the buffer overflow, the only thought I have is a missing \n on the end of the error msg:
if (!S_ISDIR(buf.st_mode)) FIXME("SetFileAttributes expected the file '%s' to be a directory", lpFileName);
Thoughts? I can submit a patch for these simple issues, but I cant explain the other issues (re files expected to be directories)
Regards, Jason