Merging from the server/server-1.25 branch
svn merge -r107352:108210
svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.25
Merge conflicts were resolved:
scripts/start-server : one conflict, kept the "working" version
indra/llcommon/llversionserver.h : reverted
indra/newview/Info-SecondLife.plist : reverted
indra/newview/res/viewerRes.rc : reverted
indra/newsim/llagentinfo.cpp : kept *both*... "working" had
is_agent_online, which nothing else had, and the merge had
isGodAllowed(), part of SEC resolution
indra/backbone/agent_router.py : kartic & rdw merged and reviewed
using brains and things
indra/newsim/llsimhttpresponder.cpp : doesn't exist in trunk, and
that's OK (even though there was a change for it)
master
parent
15a6d273cc
commit
f1380f2fc3
|
|
@ -663,7 +663,8 @@ S32 LLStringOps::collate(const llwchar* a, const llwchar* b)
|
|||
|
||||
namespace LLStringFn
|
||||
{
|
||||
void replace_nonprintable(std::basic_string<char>& string, char replacement)
|
||||
// NOTE - this restricts output to ascii
|
||||
void replace_nonprintable_in_ascii(std::basic_string<char>& string, char replacement)
|
||||
{
|
||||
const char MIN = 0x20;
|
||||
std::basic_string<char>::size_type len = string.size();
|
||||
|
|
@ -676,23 +677,9 @@ namespace LLStringFn
|
|||
}
|
||||
}
|
||||
|
||||
void replace_nonprintable(
|
||||
std::basic_string<llwchar>& string,
|
||||
llwchar replacement)
|
||||
{
|
||||
const llwchar MIN = 0x20;
|
||||
const llwchar MAX = 0x7f;
|
||||
std::basic_string<llwchar>::size_type len = string.size();
|
||||
for(std::basic_string<llwchar>::size_type ii = 0; ii < len; ++ii)
|
||||
{
|
||||
if((string[ii] < MIN) || (string[ii] > MAX))
|
||||
{
|
||||
string[ii] = replacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void replace_nonprintable_and_pipe(std::basic_string<char>& str,
|
||||
// NOTE - this restricts output to ascii
|
||||
void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str,
|
||||
char replacement)
|
||||
{
|
||||
const char MIN = 0x20;
|
||||
|
|
@ -707,22 +694,6 @@ namespace LLStringFn
|
|||
}
|
||||
}
|
||||
|
||||
void replace_nonprintable_and_pipe(std::basic_string<llwchar>& str,
|
||||
llwchar replacement)
|
||||
{
|
||||
const llwchar MIN = 0x20;
|
||||
const llwchar MAX = 0x7f;
|
||||
const llwchar PIPE = 0x7c;
|
||||
std::basic_string<llwchar>::size_type len = str.size();
|
||||
for(std::basic_string<llwchar>::size_type ii = 0; ii < len; ++ii)
|
||||
{
|
||||
if( (str[ii] < MIN) || (str[ii] > MAX) || (str[ii] == PIPE) )
|
||||
{
|
||||
str[ii] = replacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// https://wiki.lindenlab.com/wiki/Unicode_Guidelines has details on
|
||||
// allowable code points for XML. Specifically, they are:
|
||||
// 0x09, 0x0a, 0x0d, and 0x20 on up. JC
|
||||
|
|
@ -748,6 +719,23 @@ namespace LLStringFn
|
|||
return output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Replace all control characters (c < 0x20) with replacement in
|
||||
* string.
|
||||
*/
|
||||
void replace_ascii_controlchars(std::basic_string<char>& string, char replacement)
|
||||
{
|
||||
const unsigned char MIN = 0x20;
|
||||
std::basic_string<char>::size_type len = string.size();
|
||||
for(std::basic_string<char>::size_type ii = 0; ii < len; ++ii)
|
||||
{
|
||||
const unsigned char c = (unsigned char) string[ii];
|
||||
if(c < MIN)
|
||||
{
|
||||
string[ii] = replacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -487,48 +487,29 @@ namespace LLStringFn
|
|||
/**
|
||||
* @brief Replace all non-printable characters with replacement in
|
||||
* string.
|
||||
* NOTE - this will zap non-ascii
|
||||
*
|
||||
* @param [in,out] string the to modify. out value is the string
|
||||
* with zero non-printable characters.
|
||||
* @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
|
||||
*/
|
||||
void replace_nonprintable(
|
||||
void replace_nonprintable_in_ascii(
|
||||
std::basic_string<char>& string,
|
||||
char replacement);
|
||||
|
||||
/**
|
||||
* @brief Replace all non-printable characters with replacement in
|
||||
* a wide string.
|
||||
*
|
||||
* @param [in,out] string the to modify. out value is the string
|
||||
* with zero non-printable characters.
|
||||
* @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
|
||||
*/
|
||||
void replace_nonprintable(
|
||||
std::basic_string<llwchar>& string,
|
||||
llwchar replacement);
|
||||
|
||||
/**
|
||||
* @brief Replace all non-printable characters and pipe characters
|
||||
* with replacement in a string.
|
||||
* NOTE - this will zap non-ascii
|
||||
*
|
||||
* @param [in,out] the string to modify. out value is the string
|
||||
* with zero non-printable characters and zero pipe characters.
|
||||
* @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
|
||||
*/
|
||||
void replace_nonprintable_and_pipe(std::basic_string<char>& str,
|
||||
void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str,
|
||||
char replacement);
|
||||
|
||||
/**
|
||||
* @brief Replace all non-printable characters and pipe characters
|
||||
* with replacement in a wide string.
|
||||
*
|
||||
* @param [in,out] the string to modify. out value is the string
|
||||
* with zero non-printable characters and zero pipe characters.
|
||||
* @param The replacement wide character. use LL_UNKNOWN_CHAR if unsure.
|
||||
*/
|
||||
void replace_nonprintable_and_pipe(std::basic_string<llwchar>& str,
|
||||
llwchar replacement);
|
||||
|
||||
/**
|
||||
* @brief Remove all characters that are not allowed in XML 1.0.
|
||||
|
|
@ -536,6 +517,19 @@ namespace LLStringFn
|
|||
* Works with US ASCII and UTF-8 encoded strings. JC
|
||||
*/
|
||||
std::string strip_invalid_xml(const std::string& input);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Replace all control characters (0 <= c < 0x20) with replacement in
|
||||
* string. This is safe for utf-8
|
||||
*
|
||||
* @param [in,out] string the to modify. out value is the string
|
||||
* with zero non-printable characters.
|
||||
* @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
|
||||
*/
|
||||
void replace_ascii_controlchars(
|
||||
std::basic_string<char>& string,
|
||||
char replacement);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ void LLParcel::setName(const std::string& name)
|
|||
// The escaping here must match the escaping in the database
|
||||
// abstraction layer.
|
||||
mName = name;
|
||||
LLStringFn::replace_nonprintable(mName, LL_UNKNOWN_CHAR);
|
||||
LLStringFn::replace_nonprintable_in_ascii(mName, LL_UNKNOWN_CHAR);
|
||||
}
|
||||
|
||||
void LLParcel::setDesc(const std::string& desc)
|
||||
|
|
@ -296,7 +296,7 @@ void LLParcel::setMusicURL(const std::string& url)
|
|||
// abstraction layer.
|
||||
// This should really filter the url in some way. Other than
|
||||
// simply requiring non-printable.
|
||||
LLStringFn::replace_nonprintable(mMusicURL, LL_UNKNOWN_CHAR);
|
||||
LLStringFn::replace_nonprintable_in_ascii(mMusicURL, LL_UNKNOWN_CHAR);
|
||||
}
|
||||
|
||||
void LLParcel::setMediaURL(const std::string& url)
|
||||
|
|
@ -306,7 +306,7 @@ void LLParcel::setMediaURL(const std::string& url)
|
|||
// abstraction layer if it's ever added.
|
||||
// This should really filter the url in some way. Other than
|
||||
// simply requiring non-printable.
|
||||
LLStringFn::replace_nonprintable(mMediaURL, LL_UNKNOWN_CHAR);
|
||||
LLStringFn::replace_nonprintable_in_ascii(mMediaURL, LL_UNKNOWN_CHAR);
|
||||
}
|
||||
|
||||
void LLParcel::setMediaDesc(const std::string& desc)
|
||||
|
|
|
|||
|
|
@ -894,7 +894,7 @@ void LLCacheName::Impl::processUUIDReply(LLMessageSystem* msg, bool isGroup)
|
|||
else
|
||||
{ // is group
|
||||
msg->getStringFast(_PREHASH_UUIDNameBlock, _PREHASH_GroupName, entry->mGroupName, i);
|
||||
LLStringFn::replace_nonprintable(entry->mGroupName, LL_UNKNOWN_CHAR);
|
||||
LLStringFn::replace_ascii_controlchars(entry->mGroupName, LL_UNKNOWN_CHAR);
|
||||
}
|
||||
|
||||
if (!isGroup)
|
||||
|
|
|
|||
Loading…
Reference in New Issue