Merge pull request #864 from tanjianfeng:fix-861

PiperOrigin-RevId: 271649711
This commit is contained in:
gVisor bot
2019-09-27 15:18:09 -07:00
2 changed files with 16 additions and 4 deletions
+3 -3
View File
@@ -79,11 +79,11 @@ func Sethostname(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.S
return 0, nil, syserror.EINVAL
}
name, err := t.CopyInString(nameAddr, int(size))
if err != nil {
name := make([]byte, size)
if _, err := t.CopyInBytes(nameAddr, name); err != nil {
return 0, nil, err
}
utsns.SetHostName(name)
utsns.SetHostName(string(name))
return 0, nil, nil
}
+13 -1
View File
@@ -41,6 +41,19 @@ TEST(UnameTest, Sanity) {
TEST(UnameTest, SetNames) {
SKIP_IF(!ASSERT_NO_ERRNO_AND_VALUE(HaveCapability(CAP_SYS_ADMIN)));
char hostname[65];
ASSERT_THAT(sethostname("0123456789", 3), SyscallSucceeds());
EXPECT_THAT(gethostname(hostname, sizeof(hostname)), SyscallSucceeds());
EXPECT_EQ(absl::string_view(hostname), "012");
ASSERT_THAT(sethostname("0123456789\0xxx", 11), SyscallSucceeds());
EXPECT_THAT(gethostname(hostname, sizeof(hostname)), SyscallSucceeds());
EXPECT_EQ(absl::string_view(hostname), "0123456789");
ASSERT_THAT(sethostname("0123456789\0xxx", 12), SyscallSucceeds());
EXPECT_THAT(gethostname(hostname, sizeof(hostname)), SyscallSucceeds());
EXPECT_EQ(absl::string_view(hostname), "0123456789");
constexpr char kHostname[] = "wubbalubba";
ASSERT_THAT(sethostname(kHostname, sizeof(kHostname)), SyscallSucceeds());
@@ -54,7 +67,6 @@ TEST(UnameTest, SetNames) {
EXPECT_EQ(absl::string_view(buf.domainname), kDomainname);
// These should just be glibc wrappers that also call uname(2).
char hostname[65];
EXPECT_THAT(gethostname(hostname, sizeof(hostname)), SyscallSucceeds());
EXPECT_EQ(absl::string_view(hostname), kHostname);