From bf963ccadf4a22ef3b81a15a4fecbd44016d07b6 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 16 May 2020 16:11:03 +0300 Subject: [PATCH] Make IPAddress::get_ipv6 safe to use. GitOrigin-RevId: 47d50318abac4231efe63820902ba4d74b6dd03d --- tdnet/td/net/Socks5.cpp | 2 +- tdutils/td/utils/port/IPAddress.cpp | 4 ++-- tdutils/td/utils/port/IPAddress.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tdnet/td/net/Socks5.cpp b/tdnet/td/net/Socks5.cpp index 8dba5f40..23e5c6f7 100644 --- a/tdnet/td/net/Socks5.cpp +++ b/tdnet/td/net/Socks5.cpp @@ -110,7 +110,7 @@ void Socks5::send_ip_address() { request += static_cast((ipv4 >> 24) & 255); } else { request += '\x04'; - request += ip_address_.get_ipv6().str(); + request += ip_address_.get_ipv6(); } auto port = ip_address_.get_port(); request += static_cast((port >> 8) & 255); diff --git a/tdutils/td/utils/port/IPAddress.cpp b/tdutils/td/utils/port/IPAddress.cpp index 06d946ac..8d3a4f57 100644 --- a/tdutils/td/utils/port/IPAddress.cpp +++ b/tdutils/td/utils/port/IPAddress.cpp @@ -267,11 +267,11 @@ uint32 IPAddress::get_ipv4() const { return htonl(ipv4_addr_.sin_addr.s_addr); } -Slice IPAddress::get_ipv6() const { +string IPAddress::get_ipv6() const { static_assert(sizeof(ipv6_addr_.sin6_addr) == 16, "ipv6 size == 16"); CHECK(is_valid()); CHECK(!is_ipv4()); - return Slice(ipv6_addr_.sin6_addr.s6_addr, 16); + return Slice(ipv6_addr_.sin6_addr.s6_addr, 16).str(); } IPAddress IPAddress::get_any_addr() const { diff --git a/tdutils/td/utils/port/IPAddress.h b/tdutils/td/utils/port/IPAddress.h index 4d6b9bce..82893909 100644 --- a/tdutils/td/utils/port/IPAddress.h +++ b/tdutils/td/utils/port/IPAddress.h @@ -39,7 +39,7 @@ class IPAddress { void set_port(int port); uint32 get_ipv4() const; - Slice get_ipv6() const; + string get_ipv6() const; Slice get_ip_str() const; IPAddress get_any_addr() const;