in Solaris openFileToWrite returns an error code that is not checked correctly
------------------------------------------------------------------------------

         Key: XERCESC-1356
         URL: http://issues.apache.org/jira/browse/XERCESC-1356
     Project: Xerces-C++
        Type: Bug
  Components: Utilities  
    Versions: 2.6.0    
 Environment: solaris 2.8
    Reporter: Luc Maisonobe
    Priority: Minor


In Solaris, the FileHandle typedef is an int representing the file descriptor 
returned from an "open" system call in the two 
XMLPlatformUtils::openFileToWrite methods.

The constructors of LocalFileFormatTarget check the error using the following 
statement :

if (!fSource)
        ThrowXMLwithMemMgr1(...)

This is correct only for FileHandle types where 0 is an unusable handle (Linux, 
for example, where the FileHandle typedef is void* and truly contains a File* 
returned by a "fopen" call). For Solaris, error values are represented by -1 
and the check performed in LocalFileFormatTarget constructors does not detect 
the error (it appears later when attempting to write, with a 
File_CouldNotWriteToFile XMLPlatformUtilsException).

Since the LocalFileFormatTarget constructor also use 0 as the default value 
when initializing its attributes, since 0 as a file descriptor represents the 
standard input and since XMLPlatformUtils::openFileToWrite is called only by 
the LocalFileFormatTarget and BinFileOutputStream constructors, I suggest to 
keep it as a forbidden FileHandle even for platforms using file descriptors, 
and to change the two Solaris implementations of openFileToWrite like this :

  replace

  return (FileHandle)open(fileName ,
                          O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE,
                          0666);

  by
  int fd = open(fileName ,
                O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE,
                0666);
  return (FileHandle) ((fd < 0) ? 0 : fd);


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to