diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-03-06 14:47:02 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-03-08 10:56:47 +0000 |
| commit | 4097c8d7a8596ddbc9a9db7b7f39c5cbdb1bd742 (patch) | |
| tree | 453b39ea237785218a551d24d6c474db317aa951 /sys/linux/init_iptables.go | |
| parent | 6387f6b7d487e2a77d753ad28c1074e39c17c3ca (diff) | |
sys/linux: clone args before mutation
Not cloning the argument results in replaceArg() replacing a union
argument with itself, which may lead to inconsistent resource
references.
Add an assertion to detect such cases in the future.
Diffstat (limited to 'sys/linux/init_iptables.go')
| -rw-r--r-- | sys/linux/init_iptables.go | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/linux/init_iptables.go b/sys/linux/init_iptables.go index 7e96662fb..95825d33c 100644 --- a/sys/linux/init_iptables.go +++ b/sys/linux/init_iptables.go @@ -31,7 +31,7 @@ func (arch *arch) generateNetfilterTable(g *prog.Gen, typ prog.Type, dir prog.Di } else { // TODO(dvyukov): try to restore original hook order after mutation // instead of assigning brand new offsets. - arg = old + arg = prog.CloneArg(old) calls = g.MutateArg(arg) } var tableArg *prog.GroupArg @@ -113,7 +113,7 @@ func (arch *arch) generateEbtables(g *prog.Gen, typ prog.Type, dir prog.Dir, old } else { // TODO(dvyukov): try to restore original hook order after mutation // instead of assigning brand new offsets. - arg = old + arg = prog.CloneArg(old) calls = g.MutateArg(arg) } if g.Target().ArgContainsAny(arg) { |
