mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
proc: limit a comm len to TASK_COMM_LEN
PiperOrigin-RevId: 580532321
This commit is contained in:
@@ -305,7 +305,11 @@ func (d *commData) Generate(ctx context.Context, buf *bytes.Buffer) error {
|
||||
// Write implements vfs.WritableDynamicBytesSource.Write.
|
||||
func (d *commData) Write(ctx context.Context, _ *vfs.FileDescription, src usermem.IOSequence, offset int64) (int64, error) {
|
||||
srclen := src.NumBytes()
|
||||
name := make([]byte, srclen)
|
||||
nameLen := int64(linux.TASK_COMM_LEN - 1)
|
||||
if srclen < nameLen {
|
||||
nameLen = srclen
|
||||
}
|
||||
name := make([]byte, nameLen)
|
||||
if _, err := src.CopyIn(ctx, name); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -2554,6 +2554,17 @@ TEST(ProcTask, CommCannotSetAnotherProcessThreadName) {
|
||||
EXPECT_THAT(InForkedProcess(rest), IsPosixErrorOkAndHolds(0));
|
||||
}
|
||||
|
||||
TEST(ProcTask, CommLenLimited) {
|
||||
auto path = JoinPath("/proc", absl::StrCat(getpid()), "task",
|
||||
absl::StrCat(syscall(SYS_gettid)), "comm");
|
||||
// comm is limited by 15 symbols (TASK_COMM_LEN).
|
||||
constexpr char kThreadName[] = "0123456789abcde";
|
||||
ASSERT_NO_ERRNO(SetContents(path, absl::StrCat(kThreadName, "XYZ")));
|
||||
|
||||
auto got_thread_name = ASSERT_NO_ERRNO_AND_VALUE(GetContents(path));
|
||||
EXPECT_EQ(absl::StrCat(kThreadName, "\n"), got_thread_name);
|
||||
}
|
||||
|
||||
TEST(ProcTaskNs, NsDirExistsAndHasCorrectMetadata) {
|
||||
EXPECT_NO_ERRNO(DirContains("/proc/self/ns", {"net", "pid", "user"}, {}));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user