Adopt absl::string_view in rtc_base/string_utils*

Bug: webrtc:13579
Change-Id: I2def83ae546156ff0ec8ef000b7ed0c48d15777c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256721
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36329}
This commit is contained in:
Ali Tofigh 2022-03-25 00:08:32 +01:00 committed by WebRTC LUCI CQ
parent 58d861c47f
commit e5b2220650
3 changed files with 7 additions and 15 deletions

View file

@ -282,7 +282,7 @@ HttpAuthResult HttpAuthenticate(const char* challenge,
// std::string decoded = username + ":" + password; // std::string decoded = username + ":" + password;
size_t len = username.size() + password.GetLength() + 2; size_t len = username.size() + password.GetLength() + 2;
char* sensitive = new char[len]; char* sensitive = new char[len];
size_t pos = strcpyn(sensitive, len, username.data(), username.size()); size_t pos = strcpyn(sensitive, len, username);
pos += strcpyn(sensitive + pos, len - pos, ":"); pos += strcpyn(sensitive + pos, len - pos, ":");
password.CopyTo(sensitive + pos, true); password.CopyTo(sensitive + pos, true);
@ -322,9 +322,9 @@ HttpAuthResult HttpAuthenticate(const char* challenge,
// std::string A1 = username + ":" + realm + ":" + password; // std::string A1 = username + ":" + realm + ":" + password;
size_t len = username.size() + realm.size() + password.GetLength() + 3; size_t len = username.size() + realm.size() + password.GetLength() + 3;
char* sensitive = new char[len]; // A1 char* sensitive = new char[len]; // A1
size_t pos = strcpyn(sensitive, len, username.data(), username.size()); size_t pos = strcpyn(sensitive, len, username);
pos += strcpyn(sensitive + pos, len - pos, ":"); pos += strcpyn(sensitive + pos, len - pos, ":");
pos += strcpyn(sensitive + pos, len - pos, realm.c_str()); pos += strcpyn(sensitive + pos, len - pos, realm);
pos += strcpyn(sensitive + pos, len - pos, ":"); pos += strcpyn(sensitive + pos, len - pos, ":");
password.CopyTo(sensitive + pos, true); password.CopyTo(sensitive + pos, true);

View file

@ -14,20 +14,15 @@
namespace rtc { namespace rtc {
size_t strcpyn(char* buffer, size_t strcpyn(char* buffer, size_t buflen, absl::string_view source) {
size_t buflen,
const char* source,
size_t srclen /* = SIZE_UNKNOWN */) {
if (buflen <= 0) if (buflen <= 0)
return 0; return 0;
if (srclen == SIZE_UNKNOWN) { size_t srclen = source.length();
srclen = strlen(source);
}
if (srclen >= buflen) { if (srclen >= buflen) {
srclen = buflen - 1; srclen = buflen - 1;
} }
memcpy(buffer, source, srclen); memcpy(buffer, source.data(), srclen);
buffer[srclen] = 0; buffer[srclen] = 0;
return srclen; return srclen;
} }

View file

@ -51,10 +51,7 @@ struct AbslStringViewCmp {
}; };
// Safe version of strncpy that always nul-terminate. // Safe version of strncpy that always nul-terminate.
size_t strcpyn(char* buffer, size_t strcpyn(char* buffer, size_t buflen, absl::string_view source);
size_t buflen,
const char* source,
size_t srclen = SIZE_UNKNOWN);
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// UTF helpers (Windows only) // UTF helpers (Windows only)