gethostname.c: change to report ENAMETOOLONG error when buflen is less
change to behaviour the same as glibc for the check about buflen
Change-Id: I98265a8fe441df6fed2527686f89b087364ca53d
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index a5b92f8..19d4017 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -482,21 +482,23 @@
TEST(unistd, gethostname) {
char hostname[HOST_NAME_MAX + 1];
-
memset(hostname, 0, sizeof(hostname));
+ // Can we get the hostname with a big buffer?
ASSERT_EQ(0, gethostname(hostname, HOST_NAME_MAX));
+
+ // Can we get the hostname with a right-sized buffer?
+ errno = 0;
+ ASSERT_EQ(0, gethostname(hostname, strlen(hostname) + 1));
+
+ // Does uname(2) agree?
utsname buf;
ASSERT_EQ(0, uname(&buf));
ASSERT_EQ(0, strncmp(hostname, buf.nodename, SYS_NMLN));
ASSERT_GT(strlen(hostname), 0U);
+ // Do we correctly detect truncation?
errno = 0;
ASSERT_EQ(-1, gethostname(hostname, strlen(hostname)));
ASSERT_EQ(ENAMETOOLONG, errno);
-
- errno = 0;
- ASSERT_EQ(0, gethostname(hostname, -2));
- ASSERT_EQ(0, errno);
- GTEST_LOG_(INFO) << "hostname=" << hostname << "\n";
}