V2 llmessage merge, incl. llcommon requisites.

Excluded llareslistener, as that appears to only be present for unit-testing
Excluded new SSL methods because, well, they don't work right reliably in v2 for me
This commit is contained in:
Shyotl
2011-02-25 19:30:59 -06:00
parent 58edba5129
commit f9937d7f8a
53 changed files with 630 additions and 276 deletions

View File

@@ -760,30 +760,36 @@ static bool remove_prefix(std::string& filename, const std::string& prefix)
static bool verify_cache_filename(const std::string& filename)
{
//NOTE: This routine is only used to check file names that our own
// code places in the cache directory. As such, it can be limited
// to this very restrictive file name pattern. It does not need to
// handle other characters.
// code places in the cache directory. As such, it can be limited
// to this very restrictive file name pattern. It does not need to
// handle other characters. The only known uses of this are (with examples):
// sim to sim object pass: fc0b72d8-9456-63d9-a802-a557ef847313.tmp
// sim to viewer mute list: mute_b78eacd0-1244-448e-93ca-28ede242f647.tmp
// sim to viewer task inventory: inventory_d8ab59d2-baf0-0e79-c4c2-a3f99b9fcf45.tmp
//IMPORTANT: Do not broaden the filenames accepted by this routine
// without careful analysis. Anything allowed by this function can
// be downloaded by the viewer.
size_t len = filename.size();
//const boost::regex expr("[a-zA-Z0-9][-_.a-zA-Z0-9]<0,49>");
if (len < 1 || len > 50)
{
//const boost::regex expr("[0-9a-zA-Z_-]<1,46>\.tmp");
if (len < 5 || len > 50)
{
return false;
}
for(unsigned i=0; i<len; ++i)
{
for(size_t i=0; i<(len-4); ++i)
{
char c = filename[i];
bool ok = isalnum(c);
if (!ok && i > 0)
{
ok = '_'==c || '-'==c || '.'==c;
}
bool ok = isalnum(c) || '_'==c || '-'==c;
if (!ok)
{
return false;
}
}
return true;
return filename[len-4] == '.'
&& filename[len-3] == 't'
&& filename[len-2] == 'm'
&& filename[len-1] == 'p';
}
void LLXferManager::processFileRequest (LLMessageSystem *mesgsys, void ** /*user_data*/)