From 3d57a4060efff460a195cf6570db2cf4c139d112 Mon Sep 17 00:00:00 2001 From: zhongjiawei Date: Tue, 17 Jan 2023 15:21:17 +0800 Subject: [PATCH] runc:modify linuxcontainer startime uint64 type tobe string --- git-commit | 2 +- ...xcontainer-starttime-uint64-type-tob.patch | 205 ++++++++++++++++++ runc.spec | 8 +- series.conf | 1 + 4 files changed, 214 insertions(+), 2 deletions(-) create mode 100644 patch/0031-runc-modify-linuxcontainer-starttime-uint64-type-tob.patch diff --git a/git-commit b/git-commit index 36e4edc..c1fb008 100644 --- a/git-commit +++ b/git-commit @@ -1 +1 @@ -cbf2b5fbcc5fe032a694335f80c651c54a6c27e6 +34166983fc5395fe07a5ff625c4f884e8efb98c8 diff --git a/patch/0031-runc-modify-linuxcontainer-starttime-uint64-type-tob.patch b/patch/0031-runc-modify-linuxcontainer-starttime-uint64-type-tob.patch new file mode 100644 index 0000000..9f3ce52 --- /dev/null +++ b/patch/0031-runc-modify-linuxcontainer-starttime-uint64-type-tob.patch @@ -0,0 +1,205 @@ +From 3b2a80f599b6339f4823fc634a7f9096f7c2a5d8 Mon Sep 17 00:00:00 2001 +From: zhongjiawei +Date: Tue, 17 Jan 2023 15:14:06 +0800 +Subject: [PATCH] runc:modify linuxcontainer starttime uint64 type tobe string + +--- + libcontainer/container.go | 2 +- + libcontainer/container_linux.go | 4 ++-- + libcontainer/container_linux_test.go | 14 +++++++------- + libcontainer/process_linux.go | 6 +++--- + libcontainer/restored_process.go | 8 ++++---- + libcontainer/system/proc.go | 4 ++-- + 6 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/libcontainer/container.go b/libcontainer/container.go +index 300c952..1759e4c 100644 +--- a/libcontainer/container.go ++++ b/libcontainer/container.go +@@ -55,7 +55,7 @@ type BaseState struct { + InitProcessPid int `json:"init_process_pid"` + + // InitProcessStartTime is the init process start time in clock cycles since boot time. +- InitProcessStartTime uint64 `json:"init_process_start"` ++ InitProcessStartTime string `json:"init_process_start"` + + // Created is the unix timestamp for the creation time of the container in UTC + Created time.Time `json:"created"` +diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go +index 10890c1..1fc8fec 100644 +--- a/libcontainer/container_linux.go ++++ b/libcontainer/container_linux.go +@@ -44,7 +44,7 @@ type linuxContainer struct { + initPath string + initArgs []string + initProcess parentProcess +- initProcessStartTime uint64 ++ initProcessStartTime string + criuPath string + newuidmapPath string + newgidmapPath string +@@ -2000,7 +2000,7 @@ func (c *linuxContainer) isPaused() (bool, error) { + + func (c *linuxContainer) currentState() (*State, error) { + var ( +- startTime uint64 ++ startTime string + externalDescriptors []string + pid = -1 + ) +diff --git a/libcontainer/container_linux_test.go b/libcontainer/container_linux_test.go +index 3eb6e5a..1a4b027 100644 +--- a/libcontainer/container_linux_test.go ++++ b/libcontainer/container_linux_test.go +@@ -102,7 +102,7 @@ func (m *mockIntelRdtManager) GetCgroups() (*configs.Cgroup, error) { + + type mockProcess struct { + _pid int +- started uint64 ++ started string + } + + func (m *mockProcess) terminate() error { +@@ -113,7 +113,7 @@ func (m *mockProcess) pid() int { + return m._pid + } + +-func (m *mockProcess) startTime() (uint64, error) { ++func (m *mockProcess) startTime() (string, error) { + return m.started, nil + } + +@@ -157,7 +157,7 @@ func TestGetContainerPids(t *testing.T) { + }, + initProcess: &mockProcess{ + _pid: 1, +- started: 10, ++ started: "10", + }, + initProcessStartTime: stat.StartTime, + } +@@ -244,7 +244,7 @@ func TestGetContainerState(t *testing.T) { + }, + initProcess: &mockProcess{ + _pid: pid, +- started: 10, ++ started: "010", + }, + cgroupManager: &mockCgroupManager{ + pids: []int{1, 2, 3}, +@@ -275,8 +275,8 @@ func TestGetContainerState(t *testing.T) { + if state.InitProcessPid != pid { + t.Fatalf("expected pid %d but received %d", pid, state.InitProcessPid) + } +- if state.InitProcessStartTime != 10 { +- t.Fatalf("expected process start time 10 but received %d", state.InitProcessStartTime) ++ if state.InitProcessStartTime != "010" { ++ t.Fatalf("expected process start time 10 but received %s", state.InitProcessStartTime) + } + paths := state.CgroupPaths + if paths == nil { +@@ -368,7 +368,7 @@ func TestGetContainerStateAfterUpdate(t *testing.T) { + t.Fatalf("expected pid %d but received %d", pid, state.InitProcessPid) + } + if state.InitProcessStartTime != stat.StartTime { +- t.Fatalf("expected process start time %d but received %d", stat.StartTime, state.InitProcessStartTime) ++ t.Fatalf("expected process start time %s but received %s", stat.StartTime, state.InitProcessStartTime) + } + if state.Config.Cgroups.Resources.Memory != 1024 { + t.Fatalf("expected Memory to be 1024 but received %q", state.Config.Cgroups.Memory) +diff --git a/libcontainer/process_linux.go b/libcontainer/process_linux.go +index 75d05b7..1124cf5 100644 +--- a/libcontainer/process_linux.go ++++ b/libcontainer/process_linux.go +@@ -38,7 +38,7 @@ type parentProcess interface { + wait() (*os.ProcessState, error) + + // startTime returns the process start time. +- startTime() (uint64, error) ++ startTime() (string, error) + signal(os.Signal) error + externalDescriptors() []string + setExternalDescriptors(fds []string) +@@ -65,7 +65,7 @@ type setnsProcess struct { + initProcessPid int + } + +-func (p *setnsProcess) startTime() (uint64, error) { ++func (p *setnsProcess) startTime() (string, error) { + stat, err := system.Stat(p.pid()) + return stat.StartTime, err + } +@@ -641,7 +641,7 @@ func (p *initProcess) terminate() error { + return err + } + +-func (p *initProcess) startTime() (uint64, error) { ++func (p *initProcess) startTime() (string, error) { + stat, err := system.Stat(p.pid()) + return stat.StartTime, err + } +diff --git a/libcontainer/restored_process.go b/libcontainer/restored_process.go +index cdffbd3..6f26e75 100644 +--- a/libcontainer/restored_process.go ++++ b/libcontainer/restored_process.go +@@ -24,7 +24,7 @@ func newRestoredProcess(cmd *exec.Cmd, fds []string) (*restoredProcess, error) { + + type restoredProcess struct { + cmd *exec.Cmd +- processStartTime uint64 ++ processStartTime string + fds []string + } + +@@ -58,7 +58,7 @@ func (p *restoredProcess) wait() (*os.ProcessState, error) { + return st, nil + } + +-func (p *restoredProcess) startTime() (uint64, error) { ++func (p *restoredProcess) startTime() (string, error) { + return p.processStartTime, nil + } + +@@ -83,7 +83,7 @@ func (p *restoredProcess) forwardChildLogs() chan error { + // a persisted state. + type nonChildProcess struct { + processPid int +- processStartTime uint64 ++ processStartTime string + fds []string + } + +@@ -103,7 +103,7 @@ func (p *nonChildProcess) wait() (*os.ProcessState, error) { + return nil, errors.New("restored process cannot be waited on") + } + +-func (p *nonChildProcess) startTime() (uint64, error) { ++func (p *nonChildProcess) startTime() (string, error) { + return p.processStartTime, nil + } + +diff --git a/libcontainer/system/proc.go b/libcontainer/system/proc.go +index 774443e..768a16e 100644 +--- a/libcontainer/system/proc.go ++++ b/libcontainer/system/proc.go +@@ -62,7 +62,7 @@ type Stat_t struct { + + // StartTime is the number of clock ticks after system boot (since + // Linux 2.6). +- StartTime uint64 ++ StartTime string + } + + // Stat returns a Stat_t instance for the specified process. +@@ -118,7 +118,7 @@ func parseStat(data string) (stat Stat_t, err error) { + if i < 0 { + return stat, fmt.Errorf("invalid stat data (too short): %q", data) + } +- stat.StartTime, err = strconv.ParseUint(data[first:first+i], 10, 64) ++ stat.StartTime = data[first:first+i] + if err != nil { + return stat, fmt.Errorf("invalid stat data (bad start time): %w", err) + } +-- +2.30.0 + diff --git a/runc.spec b/runc.spec index c5a2f3e..0ef7f21 100644 --- a/runc.spec +++ b/runc.spec @@ -3,7 +3,7 @@ Name: docker-runc Version: 1.1.3 -Release: 9 +Release: 10 Summary: runc is a CLI tool for spawning and running containers according to the OCI specification. License: ASL 2.0 @@ -54,6 +54,12 @@ install -p -m 755 runc $RPM_BUILD_ROOT/%{_bindir}/runc %{_bindir}/runc %changelog +* Tue Jan 17 2023 zhongjiawei - 1.1.3-10 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:modify linuxcontainer starttime uint64 type tobe string + * Tue Jan 10 2023 zhongjiawei - 1.1.3-9 - Type:bugfix - CVE:NA diff --git a/series.conf b/series.conf index babae95..4719f82 100644 --- a/series.conf +++ b/series.conf @@ -28,3 +28,4 @@ patch/0027-runc-modify-runc-Makefile.patch patch/0028-runc-cgroup-apply-method-modify.patch patch/0029-runc-runc-log-forward-to-syslog.patch patch/0030-runc-support-specify-umask.patch +patch/0031-runc-modify-linuxcontainer-starttime-uint64-type-tob.patch -- Gitee