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

Side by Side Diff: webrtc/base/ipaddress.cc

Issue 1480743002: Strip IP addresses in NDEBUG (release) builds. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 23 matching lines...) Expand all
34 namespace rtc { 34 namespace rtc {
35 35
36 // Prefixes used for categorizing IPv6 addresses. 36 // Prefixes used for categorizing IPv6 addresses.
37 static const in6_addr kV4MappedPrefix = {{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37 static const in6_addr kV4MappedPrefix = {{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
38 0xFF, 0xFF, 0}}}; 38 0xFF, 0xFF, 0}}};
39 static const in6_addr k6To4Prefix = {{{0x20, 0x02, 0}}}; 39 static const in6_addr k6To4Prefix = {{{0x20, 0x02, 0}}};
40 static const in6_addr kTeredoPrefix = {{{0x20, 0x01, 0x00, 0x00}}}; 40 static const in6_addr kTeredoPrefix = {{{0x20, 0x01, 0x00, 0x00}}};
41 static const in6_addr kV4CompatibilityPrefix = {{{0}}}; 41 static const in6_addr kV4CompatibilityPrefix = {{{0}}};
42 static const in6_addr k6BonePrefix = {{{0x3f, 0xfe, 0}}}; 42 static const in6_addr k6BonePrefix = {{{0x3f, 0xfe, 0}}};
43 43
44 bool IPAddress::strip_sensitive_ = false;
45
46 static bool IsPrivateV4(uint32_t ip); 44 static bool IsPrivateV4(uint32_t ip);
47 static in_addr ExtractMappedAddress(const in6_addr& addr); 45 static in_addr ExtractMappedAddress(const in6_addr& addr);
48 46
49 uint32_t IPAddress::v4AddressAsHostOrderInteger() const { 47 uint32_t IPAddress::v4AddressAsHostOrderInteger() const {
50 if (family_ == AF_INET) { 48 if (family_ == AF_INET) {
51 return NetworkToHost32(u_.ip4.s_addr); 49 return NetworkToHost32(u_.ip4.s_addr);
52 } else { 50 } else {
53 return 0; 51 return 0;
54 } 52 }
55 } 53 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 if (family_ == AF_INET6) { 135 if (family_ == AF_INET6) {
138 src = &u_.ip6; 136 src = &u_.ip6;
139 } 137 }
140 if (!rtc::inet_ntop(family_, src, buf, sizeof(buf))) { 138 if (!rtc::inet_ntop(family_, src, buf, sizeof(buf))) {
141 return std::string(); 139 return std::string();
142 } 140 }
143 return std::string(buf); 141 return std::string(buf);
144 } 142 }
145 143
146 std::string IPAddress::ToSensitiveString() const { 144 std::string IPAddress::ToSensitiveString() const {
147 if (!strip_sensitive_) 145 #if !defined(NDEBUG)
148 return ToString(); 146 // Return non-stripped in debug.
149 147 return ToString();
148 #else
150 switch (family_) { 149 switch (family_) {
151 case AF_INET: { 150 case AF_INET: {
152 std::string address = ToString(); 151 std::string address = ToString();
153 size_t find_pos = address.rfind('.'); 152 size_t find_pos = address.rfind('.');
154 if (find_pos == std::string::npos) 153 if (find_pos == std::string::npos)
155 return std::string(); 154 return std::string();
156 address.resize(find_pos); 155 address.resize(find_pos);
157 address += ".x"; 156 address += ".x";
158 return address; 157 return address;
159 } 158 }
160 case AF_INET6: { 159 case AF_INET6: {
161 // TODO(grunell): Return a string of format 1:2:3:x:x:x:x:x or such 160 // TODO(grunell): Return a string of format 1:2:3:x:x:x:x:x or such
162 // instead of zeroing out. 161 // instead of zeroing out.
163 return TruncateIP(*this, 128 - 80).ToString(); 162 return TruncateIP(*this, 128 - 80).ToString();
164 } 163 }
165 } 164 }
166 return std::string(); 165 return std::string();
166 #endif
167 } 167 }
168 168
169 IPAddress IPAddress::Normalized() const { 169 IPAddress IPAddress::Normalized() const {
170 if (family_ != AF_INET6) { 170 if (family_ != AF_INET6) {
171 return *this; 171 return *this;
172 } 172 }
173 if (!IPIsV4Mapped(*this)) { 173 if (!IPIsV4Mapped(*this)) {
174 return *this; 174 return *this;
175 } 175 }
176 in_addr addr = ExtractMappedAddress(u_.ip6); 176 in_addr addr = ExtractMappedAddress(u_.ip6);
177 return IPAddress(addr); 177 return IPAddress(addr);
178 } 178 }
179 179
180 IPAddress IPAddress::AsIPv6Address() const { 180 IPAddress IPAddress::AsIPv6Address() const {
181 if (family_ != AF_INET) { 181 if (family_ != AF_INET) {
182 return *this; 182 return *this;
183 } 183 }
184 in6_addr v6addr = kV4MappedPrefix; 184 in6_addr v6addr = kV4MappedPrefix;
185 ::memcpy(&v6addr.s6_addr[12], &u_.ip4.s_addr, sizeof(u_.ip4.s_addr)); 185 ::memcpy(&v6addr.s6_addr[12], &u_.ip4.s_addr, sizeof(u_.ip4.s_addr));
186 return IPAddress(v6addr); 186 return IPAddress(v6addr);
187 } 187 }
188 188
189 void IPAddress::set_strip_sensitive(bool enable) {
190 strip_sensitive_ = enable;
191 }
192
193 bool InterfaceAddress::operator==(const InterfaceAddress &other) const { 189 bool InterfaceAddress::operator==(const InterfaceAddress &other) const {
194 return ipv6_flags_ == other.ipv6_flags() && 190 return ipv6_flags_ == other.ipv6_flags() &&
195 static_cast<const IPAddress&>(*this) == other; 191 static_cast<const IPAddress&>(*this) == other;
196 } 192 }
197 193
198 bool InterfaceAddress::operator!=(const InterfaceAddress &other) const { 194 bool InterfaceAddress::operator!=(const InterfaceAddress &other) const {
199 return !((*this) == other); 195 return !((*this) == other);
200 } 196 }
201 197
202 const InterfaceAddress& InterfaceAddress::operator=( 198 const InterfaceAddress& InterfaceAddress::operator=(
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 if (family == AF_INET) { 507 if (family == AF_INET) {
512 return rtc::IPAddress(INADDR_ANY); 508 return rtc::IPAddress(INADDR_ANY);
513 } 509 }
514 if (family == AF_INET6) { 510 if (family == AF_INET6) {
515 return rtc::IPAddress(in6addr_any); 511 return rtc::IPAddress(in6addr_any);
516 } 512 }
517 return rtc::IPAddress(); 513 return rtc::IPAddress();
518 } 514 }
519 515
520 } // Namespace rtc 516 } // Namespace rtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698