aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-09-22 11:13:39 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-09-22 11:36:50 +0200
commita3babc826dff0c4bc027d7d62e79500fb9a5a69c (patch)
treeca3a10fdc08830cb3ee974222279201b065860f8 /src/init.cpp
parentd3b0d8c0e6b510b2c113abc70c54edfde16eb7f5 (diff)
parent1c1b1b315f2f89584abe9a7558945dea2fbee708 (diff)
downloadbitcoin-a3babc826dff0c4bc027d7d62e79500fb9a5a69c.tar.xz
Merge pull request #6647
1c1b1b3 [uacomment] Sanitize per BIP-0014 (MarcoFalke)
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 98834ef010..7c3c18acd2 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1044,8 +1044,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
RegisterNodeSignals(GetNodeSignals());
- // format user agent, check total size
- strSubVersion = FormatSubVersion(CLIENT_NAME, CLIENT_VERSION, mapMultiArgs.count("-uacomment") ? mapMultiArgs["-uacomment"] : std::vector<string>());
+ // sanitize comments per BIP-0014, format user agent and check total size
+ std::vector<string> uacomments;
+ BOOST_FOREACH(string cmt, mapMultiArgs["-uacomment"])
+ {
+ if (cmt != SanitizeString(cmt, SAFE_CHARS_UA_COMMENT))
+ return InitError(strprintf("User Agent comment (%s) contains unsafe characters.", cmt));
+ uacomments.push_back(SanitizeString(cmt, SAFE_CHARS_UA_COMMENT));
+ }
+ strSubVersion = FormatSubVersion(CLIENT_NAME, CLIENT_VERSION, uacomments);
if (strSubVersion.size() > MAX_SUBVERSION_LENGTH) {
return InitError(strprintf("Total length of network version string %i exceeds maximum of %i characters. Reduce the number and/or size of uacomments.",
strSubVersion.size(), MAX_SUBVERSION_LENGTH));