diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llsechandler_basic.cpp | 32 | 
1 files changed, 24 insertions, 8 deletions
| diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index fc9d9f0842..588c585f52 100755 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp @@ -1364,6 +1364,7 @@ void LLSecAPIBasicHandler::_writeProtectedData()  	}  	catch (...)  	{ +		LL_WARNS() << "LLProtectedDataException(Error writing Protected Data Store)" << LL_ENDL;  		// it's good practice to clean up any secure information on error  		// (even though this file isn't really secure.  Perhaps in the future  		// it may be, however. @@ -1372,20 +1373,35 @@ void LLSecAPIBasicHandler::_writeProtectedData()  		// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData()  		// Decided throwing an exception here was overkill until we figure out why this happens  		//throw LLProtectedDataException("Error writing Protected Data Store"); -		LL_INFOS() << "LLProtectedDataException(Error writing Protected Data Store)" << LL_ENDL;  	} -	// move the temporary file to the specified file location. -	if((((LLFile::isfile(mProtectedDataFilename) != 0) &&  -		 (LLFile::remove(mProtectedDataFilename) != 0))) ||  -	   (LLFile::rename(tmp_filename, mProtectedDataFilename))) +    try +    { +        // move the temporary file to the specified file location. +        if(((   (LLFile::isfile(mProtectedDataFilename) != 0) +             && (LLFile::remove(mProtectedDataFilename) != 0))) +           || (LLFile::rename(tmp_filename, mProtectedDataFilename))) +        { +            LL_WARNS() << "LLProtectedDataException(Could not overwrite protected data store)" << LL_ENDL; +            LLFile::remove(tmp_filename); + +            // EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData() +            // Decided throwing an exception here was overkill until we figure out why this happens +            //throw LLProtectedDataException("Could not overwrite protected data store"); +        } +	} +	catch (...)  	{ +		LL_WARNS() << "LLProtectedDataException(Error renaming '" << tmp_filename +                   << "' to '" << mProtectedDataFilename << "')" << LL_ENDL; +		// it's good practice to clean up any secure information on error +		// (even though this file isn't really secure.  Perhaps in the future +		// it may be, however.  		LLFile::remove(tmp_filename); -		// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData() +		//crash in LLSecAPIBasicHandler::_writeProtectedData()  		// Decided throwing an exception here was overkill until we figure out why this happens -		//throw LLProtectedDataException("Could not overwrite protected data store"); -		LL_INFOS() << "LLProtectedDataException(Could not overwrite protected data store)" << LL_ENDL; +		//throw LLProtectedDataException("Error writing Protected Data Store");  	}  } | 
