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

Unified Diff: native_client_sdk/src/libraries/nacl_io_test/socket_test.cc

Issue 22625004: Adds htonl, htons, ntohl, and ntohs to newlib (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gethostbyname
Patch Set: Fixed Merge Conflict with Master Created 7 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
Index: native_client_sdk/src/libraries/nacl_io_test/socket_test.cc
diff --git a/native_client_sdk/src/libraries/nacl_io_test/socket_test.cc b/native_client_sdk/src/libraries/nacl_io_test/socket_test.cc
index ec45185ff2c64dd9af076fda4b9e9e52a33f919d..31a8f5a9d6a02fb6be6809097a0cba7eebf5ca01 100644
--- a/native_client_sdk/src/libraries/nacl_io_test/socket_test.cc
+++ b/native_client_sdk/src/libraries/nacl_io_test/socket_test.cc
@@ -268,6 +268,26 @@ TEST_F(SocketTest, Socketpair) {
// implementations of these functions).
#if !defined(__GLIBC__)
+TEST(SocketUtilityFunctions, Htonl) {
+ uint32_t host_long = 0x44332211;
+ uint32_t network_long = htonl(host_long);
+ uint8_t network_bytes[4];
+ memcpy(network_bytes, &network_long, 4);
+ EXPECT_EQ(network_bytes[0], 0x44);
+ EXPECT_EQ(network_bytes[1], 0x33);
+ EXPECT_EQ(network_bytes[2], 0x22);
+ EXPECT_EQ(network_bytes[3], 0x11);
+}
+
+TEST(SocketUtilityFunctions, Htons) {
+ uint16_t host_short = 0x2211;
+ uint16_t network_short = htons(host_short);
+ uint8_t network_bytes[2];
+ memcpy(network_bytes, &network_short, 2);
+ EXPECT_EQ(network_bytes[0], 0x22);
+ EXPECT_EQ(network_bytes[1], 0x11);
+}
+
static struct in_addr generate_ipv4_addr(int tuple1, int tuple2,
int tuple3, int tuple4) {
unsigned char addr[4];
@@ -275,8 +295,9 @@ static struct in_addr generate_ipv4_addr(int tuple1, int tuple2,
addr[1] = static_cast<unsigned char>(tuple2);
addr[2] = static_cast<unsigned char>(tuple3);
addr[3] = static_cast<unsigned char>(tuple4);
- struct in_addr* real_addr = reinterpret_cast<struct in_addr*>(addr);
- return *real_addr;
+ struct in_addr real_addr;
+ memcpy(&real_addr, addr, 4);
+ return real_addr;
}
static struct in6_addr generate_ipv6_addr(int* tuples) {
@@ -285,8 +306,9 @@ static struct in6_addr generate_ipv6_addr(int* tuples) {
addr[2*i] = (tuples[i] >> 8) & 0xFF;
addr[2*i+1] = tuples[i] & 0xFF;
}
- struct in6_addr* real_addr = reinterpret_cast<struct in6_addr*>(addr);
- return *real_addr;
+ struct in6_addr real_addr;
+ memcpy(&real_addr, addr, 16);
+ return real_addr;
}
TEST(SocketUtilityFunctions, Inet_ntoa) {
@@ -372,5 +394,21 @@ TEST(SocketUtilityFunctions, Inet_ntop_failure) {
EXPECT_EQ(errno, ENOSPC);
}
+TEST(SocketUtilityFunctions, Ntohs) {
+ uint8_t network_bytes[2] = { 0x22, 0x11 };
+ uint16_t network_short;
+ memcpy(&network_short, network_bytes, 2);
+ uint16_t host_short = ntohs(network_short);
+ EXPECT_EQ(host_short, 0x2211);
+}
+
+TEST(SocketUtilityFunctions, Ntohl) {
+ uint8_t network_bytes[4] = { 0x44, 0x33, 0x22, 0x11 };
+ uint32_t network_long;
+ memcpy(&network_long, network_bytes, 4);
+ uint32_t host_long = ntohl(network_long);
+ EXPECT_EQ(host_long, 0x44332211);
+}
+
#endif // !defined(__GLIBC__)
#endif // PROVIDES_SOCKETPAIR_API

Powered by Google App Engine
This is Rietveld 408576698