Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2308)

Unified Diff: chrome/browser/renderer_preferences_util.cc

Issue 2127653002: Add policy to control valid UDP port range in WebRTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tnagel's comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/policy/policy_browsertest.cc ('k') | chrome/browser/ui/browser_ui_prefs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/renderer_preferences_util.cc
diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc
index 1a1a910a0b300ae00e0d8a30c1cd8973bf31bd8f..d47d2d0e51f05f37ea74868f914df6eef75c7289 100644
--- a/chrome/browser/renderer_preferences_util.cc
+++ b/chrome/browser/renderer_preferences_util.cc
@@ -4,7 +4,11 @@
#include "chrome/browser/renderer_preferences_util.h"
+#include <string>
+
#include "base/macros.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h"
@@ -28,6 +32,46 @@
#include "ui/views/linux_ui/linux_ui.h"
#endif
+namespace {
+
+// Parses a string |range| with a port range in the form "<min>-<max>".
+// If |range| is not in the correct format or contains an invalid range, zero
+// is written to |min_port| and |max_port|.
+// TODO(guidou): Consider replacing with remoting/protocol/port_range.cc
+void ParsePortRange(const std::string& range,
+ uint16_t* min_port,
+ uint16_t* max_port) {
+ *min_port = 0;
+ *max_port = 0;
+
+ if (range.empty())
+ return;
+
+ size_t separator_index = range.find('-');
+ if (separator_index == std::string::npos)
+ return;
+
+ std::string min_port_string, max_port_string;
+ base::TrimWhitespaceASCII(range.substr(0, separator_index), base::TRIM_ALL,
+ &min_port_string);
+ base::TrimWhitespaceASCII(range.substr(separator_index + 1), base::TRIM_ALL,
+ &max_port_string);
+ unsigned min_port_uint, max_port_uint;
+ if (!base::StringToUint(min_port_string, &min_port_uint) ||
+ !base::StringToUint(max_port_string, &max_port_uint)) {
+ return;
+ }
+ if (min_port_uint == 0 || min_port_uint > max_port_uint ||
+ max_port_uint > UINT16_MAX) {
+ return;
+ }
+
+ *min_port = static_cast<uint16_t>(min_port_uint);
+ *max_port = static_cast<uint16_t>(max_port_uint);
+}
+
+} // namespace
+
namespace renderer_preferences_util {
void UpdateFromSystemSettings(content::RendererPreferences* prefs,
@@ -55,6 +99,10 @@ void UpdateFromSystemSettings(content::RendererPreferences* prefs,
prefs->webrtc_ip_handling_policy =
pref_service->GetString(prefs::kWebRTCIPHandlingPolicy);
}
+ std::string webrtc_udp_port_range =
+ pref_service->GetString(prefs::kWebRTCUDPPortRange);
+ ParsePortRange(webrtc_udp_port_range, &prefs->webrtc_udp_min_port,
+ &prefs->webrtc_udp_max_port);
#endif
#if defined(USE_DEFAULT_RENDER_THEME)
« no previous file with comments | « chrome/browser/policy/policy_browsertest.cc ('k') | chrome/browser/ui/browser_ui_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698