Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package inspektor-gadget for
openSUSE:Factory checked in at 2026-09-28 10:47:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/inspektor-gadget (Old)
and /work/SRC/openSUSE:Factory/.inspektor-gadget.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "inspektor-gadget"
Mon Sep 28 10:47:56 2026 rev:39 rq:1381025 version:0.56.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/inspektor-gadget/inspektor-gadget.changes
2026-09-18 22:08:02.241362358 +0200
+++
/work/SRC/openSUSE:Factory/.inspektor-gadget.new.383539/inspektor-gadget.changes
2026-09-28 10:48:54.703134236 +0200
@@ -1,0 +2,23 @@
+Mon Sep 28 04:46:03 UTC 2026 - Johannes Kastl
<[email protected]>
+
+- Update to version 0.56.1:
+ * Bugfixes
+ - [BACKPORT] USDT related fixes in #5808:
+ - uprobetracer: Parsing USDT notes in 32-bit ELF binaries no
+ longer panics and crashes the process (dd9f3b7).
+ - uprobetracer: Compressed USDT note sections are now
+ rejected and reads from the section are capped, so a
+ crafted binary can't exhaust memory (eab867e).
+ - uprobetracer: USDT probe addresses are now mapped only
+ through PT_LOAD file content, with overflow checks, so
+ probes aren't attached to the wrong place (2a930bb).
+ * Dependencies update
+ - [BACKPORT] USDT related fixes in #5808:
+ - Bumped gRPC to v1.83.2 to pick up security fixes in gRPC
+ (d2d8478).
+ - Bumped otlploggrpc to v0.21.0 to pick up security fixes in
+ OpenTelemetry, and updated the otel-logs operator for its
+ API changes (bf45a79).
+ - Ran go mod tidy on the trace_dns wasm module (69933dc).
+
+-------------------------------------------------------------------
Old:
----
inspektor-gadget-0.56.0.obscpio
New:
----
inspektor-gadget-0.56.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ inspektor-gadget.spec ++++++
--- /var/tmp/diff_new_pack.6ZJ2AE/_old 2026-09-28 10:48:57.707260104 +0200
+++ /var/tmp/diff_new_pack.6ZJ2AE/_new 2026-09-28 10:48:57.708260145 +0200
@@ -17,7 +17,7 @@
Name: inspektor-gadget
-Version: 0.56.0
+Version: 0.56.1
Release: 0
Summary: A eBPF tool and systems inspection framework
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.6ZJ2AE/_old 2026-09-28 10:48:57.763262450 +0200
+++ /var/tmp/diff_new_pack.6ZJ2AE/_new 2026-09-28 10:48:57.769262701 +0200
@@ -3,7 +3,7 @@
<param
name="url">https://github.com/inspektor-gadget/inspektor-gadget.git</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">refs/tags/v0.56.0</param>
+ <param name="revision">refs/tags/v0.56.1</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">enable</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.6ZJ2AE/_old 2026-09-28 10:48:57.810264419 +0200
+++ /var/tmp/diff_new_pack.6ZJ2AE/_new 2026-09-28 10:48:57.821264880 +0200
@@ -3,6 +3,6 @@
<param
name="url">https://github.com/inspektor-gadget/inspektor-gadget</param>
<param
name="changesrevision">7a314380ff61534ea70df9fb086505f958b2dff9</param></service><service
name="tar_scm">
<param
name="url">https://github.com/inspektor-gadget/inspektor-gadget.git</param>
- <param
name="changesrevision">e5a2855f270ca6557f4bd7e4fabaddf6760d8f50</param></service></servicedata>
+ <param
name="changesrevision">815346241cb6727badef69b4db6ead6cf29eff2b</param></service></servicedata>
(No newline at EOF)
++++++ inspektor-gadget-0.56.0.obscpio -> inspektor-gadget-0.56.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/examples/go.mod
new/inspektor-gadget-0.56.1/examples/go.mod
--- old/inspektor-gadget-0.56.0/examples/go.mod 2026-09-07 07:53:11.000000000
+0200
+++ new/inspektor-gadget-0.56.1/examples/go.mod 2026-09-25 10:16:17.000000000
+0200
@@ -53,7 +53,7 @@
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 //
indirect
github.com/go-errors/errors v1.4.2 // indirect
github.com/go-ldap/ldap/v3 v3.4.12 // indirect
- github.com/go-logr/logr v1.4.3 // indirect
+ github.com/go-logr/logr v1.4.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
@@ -70,7 +70,7 @@
github.com/google/go-containerregistry v0.21.3 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gopacket/gopacket v1.7.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
github.com/in-toto/attestation v1.2.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
@@ -135,20 +135,20 @@
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0
// indirect
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 // indirect
- go.opentelemetry.io/otel v1.44.0 // indirect
+ go.opentelemetry.io/otel v1.45.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
v1.42.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.64.0 // indirect
- go.opentelemetry.io/otel/metric v1.44.0 // indirect
- go.opentelemetry.io/otel/sdk v1.44.0 // indirect
- go.opentelemetry.io/otel/sdk/metric v1.44.0 // indirect
- go.opentelemetry.io/otel/trace v1.44.0 // indirect
- go.opentelemetry.io/proto/otlp v1.9.0 // indirect
+ go.opentelemetry.io/otel/metric v1.45.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.45.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.45.0 // indirect
+ go.opentelemetry.io/otel/trace v1.45.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.11.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.55.0 // indirect
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect
golang.org/x/mod v0.40.0 // indirect
- golang.org/x/net v0.57.0 // indirect
+ golang.org/x/net v0.58.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.22.0 // indirect
golang.org/x/sys v0.47.0 // indirect
@@ -156,9 +156,9 @@
golang.org/x/text v0.41.0 // indirect
golang.org/x/time v0.15.0 // indirect
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 //
indirect
- google.golang.org/genproto/googleapis/api
v0.0.0-20260526163538-3dc84a4a5aaa // indirect
- google.golang.org/genproto/googleapis/rpc
v0.0.0-20260526163538-3dc84a4a5aaa // indirect
- google.golang.org/grpc v1.83.1 // indirect
+ google.golang.org/genproto/googleapis/api
v0.0.0-20260803160001-6ac0973c030d // indirect
+ google.golang.org/genproto/googleapis/rpc
v0.0.0-20260803160001-6ac0973c030d // indirect
+ google.golang.org/grpc v1.83.2 // indirect
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af //
indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/examples/go.sum
new/inspektor-gadget-0.56.1/examples/go.sum
--- old/inspektor-gadget-0.56.0/examples/go.sum 2026-09-07 07:53:11.000000000
+0200
+++ new/inspektor-gadget-0.56.1/examples/go.sum 2026-09-25 10:16:17.000000000
+0200
@@ -113,8 +113,8 @@
github.com/go-ldap/ldap/v3 v3.4.12
h1:1b81mv7MagXZ7+1r7cLTWmyuTqVqdwbtJSjC0DAp9s4=
github.com/go-ldap/ldap/v3 v3.4.12/go.mod
h1:+SPAGcTtOfmGsCb3h1RFiq4xpp4N636G75OEace8lNo=
github.com/go-logr/logr v1.2.2/go.mod
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
-github.com/go-logr/logr v1.4.3/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8=
+github.com/go-logr/logr v1.4.4/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod
h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-openapi/jsonpointer v0.21.0
h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
@@ -178,8 +178,8 @@
github.com/google/uuid v1.6.0/go.mod
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopacket/gopacket v1.7.0
h1:GdmF8ytGnjtSvyy30CTZhIwX1ybDWH3Q0MNK0blIKzA=
github.com/gopacket/gopacket v1.7.0/go.mod
h1:QKowPlTLrQU2rqV5C5I14Aoaid3l8da3kbddibc/Wgk=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0
h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod
h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0
h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod
h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs=
github.com/hashicorp/go-uuid v1.0.3
h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.8.0
h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4=
@@ -413,24 +413,24 @@
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod
h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0=
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0
h1:fM78cKITJ2r08cl+nw5i+hI9zWAu3iak8o1Os/ca2Ck=
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0/go.mod
h1:ybmlzIqGcQzwt5lAfi8TpSnHo/CI3yv1Czodmm+OJa8=
-go.opentelemetry.io/otel v1.44.0
h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
-go.opentelemetry.io/otel v1.44.0/go.mod
h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
+go.opentelemetry.io/otel v1.45.0
h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU=
+go.opentelemetry.io/otel v1.45.0/go.mod
h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0
h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc=
go.opentelemetry.io/otel/exporters/prometheus v0.64.0
h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs=
go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod
h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro=
-go.opentelemetry.io/otel/metric v1.44.0
h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
-go.opentelemetry.io/otel/metric v1.44.0/go.mod
h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
-go.opentelemetry.io/otel/metric/x v0.66.0
h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA=
-go.opentelemetry.io/otel/metric/x v0.66.0/go.mod
h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk=
-go.opentelemetry.io/otel/sdk v1.44.0
h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
-go.opentelemetry.io/otel/sdk v1.44.0/go.mod
h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
-go.opentelemetry.io/otel/sdk/metric v1.44.0
h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
-go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod
h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
-go.opentelemetry.io/otel/trace v1.44.0
h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
-go.opentelemetry.io/otel/trace v1.44.0/go.mod
h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
-go.opentelemetry.io/proto/otlp v1.9.0
h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
-go.opentelemetry.io/proto/otlp v1.9.0/go.mod
h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
+go.opentelemetry.io/otel/metric v1.45.0
h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M=
+go.opentelemetry.io/otel/metric v1.45.0/go.mod
h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s=
+go.opentelemetry.io/otel/metric/x v0.67.0
h1:PcicCNZFkZ4bXfSooXdo3WN7RBOVOtjVdo1wD358Uns=
+go.opentelemetry.io/otel/metric/x v0.67.0/go.mod
h1:FBjCWZe6wgcqxcMtjdGiClDKXb2YxxXii0CXftE4QtI=
+go.opentelemetry.io/otel/sdk v1.45.0
h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw=
+go.opentelemetry.io/otel/sdk v1.45.0/go.mod
h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA=
+go.opentelemetry.io/otel/sdk/metric v1.45.0
h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o=
+go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod
h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA=
+go.opentelemetry.io/otel/trace v1.45.0
h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag=
+go.opentelemetry.io/otel/trace v1.45.0/go.mod
h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc=
+go.opentelemetry.io/proto/otlp v1.11.0
h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk=
+go.opentelemetry.io/proto/otlp v1.11.0/go.mod
h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod
h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -476,8 +476,8 @@
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod
h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
-golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
+golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
+golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
golang.org/x/oauth2 v0.36.0/go.mod
h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
@@ -554,17 +554,17 @@
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod
h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697
h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod
h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc=
-google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa
h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8=
-google.golang.org/genproto/googleapis/api
v0.0.0-20260526163538-3dc84a4a5aaa/go.mod
h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa
h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
-google.golang.org/genproto/googleapis/rpc
v0.0.0-20260526163538-3dc84a4a5aaa/go.mod
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d
h1:FarXi840EJWSHYTN3ERkADbPWjl307+FGrA22KAVjjc=
+google.golang.org/genproto/googleapis/api
v0.0.0-20260803160001-6ac0973c030d/go.mod
h1:K/+WGbmBY7aNW1HDw1fJnKYo10i0DkAX6pows00dLig=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d
h1:IL4hdHzcUv2l/gcg98/Rj3FbtE6axwqslOW8SW0C+S0=
+google.golang.org/genproto/googleapis/rpc
v0.0.0-20260803160001-6ac0973c030d/go.mod
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.19.0/go.mod
h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod
h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod
h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod
h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.2/go.mod
h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y=
-google.golang.org/grpc v1.83.1/go.mod
h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ=
+google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
+google.golang.org/grpc v1.83.2/go.mod
h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod
h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/gadgets/trace_dns/go/go.mod
new/inspektor-gadget-0.56.1/gadgets/trace_dns/go/go.mod
--- old/inspektor-gadget-0.56.0/gadgets/trace_dns/go/go.mod 2026-09-07
07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/gadgets/trace_dns/go/go.mod 2026-09-25
10:16:17.000000000 +0200
@@ -5,7 +5,7 @@
require (
// Version doesn't matter because of the replace directive below.
github.com/inspektor-gadget/inspektor-gadget v0.0.0
- golang.org/x/net v0.57.0
+ golang.org/x/net v0.58.0
)
// Only needed by in-tree gadgets
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/gadgets/trace_dns/go/go.sum
new/inspektor-gadget-0.56.1/gadgets/trace_dns/go/go.sum
--- old/inspektor-gadget-0.56.0/gadgets/trace_dns/go/go.sum 2026-09-07
07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/gadgets/trace_dns/go/go.sum 2026-09-25
10:16:17.000000000 +0200
@@ -1,2 +1,2 @@
-golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
-golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
+golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
+golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/go.mod
new/inspektor-gadget-0.56.1/go.mod
--- old/inspektor-gadget-0.56.0/go.mod 2026-09-07 07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/go.mod 2026-09-25 10:16:17.000000000 +0200
@@ -49,22 +49,22 @@
go.opentelemetry.io/collector/pdata/pprofile v0.147.0
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0
go.opentelemetry.io/ebpf-profiler v0.0.202536
- go.opentelemetry.io/otel v1.44.0
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0
+ go.opentelemetry.io/otel v1.45.0
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
v1.42.0
go.opentelemetry.io/otel/exporters/prometheus v0.64.0
- go.opentelemetry.io/otel/log v0.18.0
- go.opentelemetry.io/otel/metric v1.44.0
- go.opentelemetry.io/otel/sdk v1.44.0
- go.opentelemetry.io/otel/sdk/log v0.18.0
- go.opentelemetry.io/otel/sdk/metric v1.44.0
+ go.opentelemetry.io/otel/log v0.21.0
+ go.opentelemetry.io/otel/metric v1.45.0
+ go.opentelemetry.io/otel/sdk v1.45.0
+ go.opentelemetry.io/otel/sdk/log v0.21.0
+ go.opentelemetry.io/otel/sdk/metric v1.45.0
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa
- golang.org/x/net v0.57.0
+ golang.org/x/net v0.58.0
golang.org/x/sync v0.22.0 // indirect
golang.org/x/sys v0.47.0
golang.org/x/term v0.45.0
golang.org/x/text v0.41.0
- google.golang.org/grpc v1.83.1
+ google.golang.org/grpc v1.83.2
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v2 v2.4.0
@@ -112,7 +112,7 @@
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-errors/errors v1.4.2 // indirect
- github.com/go-logr/logr v1.4.3 // indirect
+ github.com/go-logr/logr v1.4.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
@@ -124,7 +124,7 @@
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/go-containerregistry v0.21.3 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 //
indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/josharian/native v1.1.0 // indirect
@@ -170,16 +170,16 @@
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0
// indirect
- go.opentelemetry.io/otel/trace v1.44.0 // indirect
- go.opentelemetry.io/proto/otlp v1.9.0 // indirect
+ go.opentelemetry.io/otel/trace v1.45.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.11.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.55.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/time v0.15.0 // indirect
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 //
indirect
- google.golang.org/genproto/googleapis/api
v0.0.0-20260526163538-3dc84a4a5aaa // indirect
- google.golang.org/genproto/googleapis/rpc
v0.0.0-20260526163538-3dc84a4a5aaa // indirect
+ google.golang.org/genproto/googleapis/api
v0.0.0-20260803160001-6ac0973c030d // indirect
+ google.golang.org/genproto/googleapis/rpc
v0.0.0-20260803160001-6ac0973c030d // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
k8s.io/component-base v0.36.2 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/go.sum
new/inspektor-gadget-0.56.1/go.sum
--- old/inspektor-gadget-0.56.0/go.sum 2026-09-07 07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/go.sum 2026-09-25 10:16:17.000000000 +0200
@@ -132,8 +132,8 @@
github.com/go-ldap/ldap/v3 v3.4.12
h1:1b81mv7MagXZ7+1r7cLTWmyuTqVqdwbtJSjC0DAp9s4=
github.com/go-ldap/ldap/v3 v3.4.12/go.mod
h1:+SPAGcTtOfmGsCb3h1RFiq4xpp4N636G75OEace8lNo=
github.com/go-logr/logr v1.2.2/go.mod
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
-github.com/go-logr/logr v1.4.3/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8=
+github.com/go-logr/logr v1.4.4/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod
h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
@@ -206,8 +206,8 @@
github.com/gopacket/gopacket v1.7.0/go.mod
h1:QKowPlTLrQU2rqV5C5I14Aoaid3l8da3kbddibc/Wgk=
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod
h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0
h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod
h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0
h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod
h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs=
github.com/hashicorp/go-uuid v1.0.3
h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.8.0
h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4=
@@ -465,32 +465,32 @@
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod
h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0=
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0
h1:fM78cKITJ2r08cl+nw5i+hI9zWAu3iak8o1Os/ca2Ck=
go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0/go.mod
h1:ybmlzIqGcQzwt5lAfi8TpSnHo/CI3yv1Czodmm+OJa8=
-go.opentelemetry.io/otel v1.44.0
h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
-go.opentelemetry.io/otel v1.44.0/go.mod
h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
-go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0
h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY=
-go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod
h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU=
+go.opentelemetry.io/otel v1.45.0
h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU=
+go.opentelemetry.io/otel v1.45.0/go.mod
h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ=
+go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0
h1:WseeVYf5dJZTsyPiyW5L14k5qsSibqXAMTSiFEDiWr0=
+go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0/go.mod
h1:SiLZnQS6Qk2eCpvr2CH/XMAOa64TWGXxEZJZCpD2Lmc=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0
h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc=
go.opentelemetry.io/otel/exporters/prometheus v0.64.0
h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs=
go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod
h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro=
-go.opentelemetry.io/otel/log v0.18.0
h1:XgeQIIBjZZrliksMEbcwMZefoOSMI1hdjiLEiiB0bAg=
-go.opentelemetry.io/otel/log v0.18.0/go.mod
h1:KEV1kad0NofR3ycsiDH4Yjcoj0+8206I6Ox2QYFSNgI=
-go.opentelemetry.io/otel/metric v1.44.0
h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
-go.opentelemetry.io/otel/metric v1.44.0/go.mod
h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
-go.opentelemetry.io/otel/metric/x v0.66.0
h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA=
-go.opentelemetry.io/otel/metric/x v0.66.0/go.mod
h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk=
-go.opentelemetry.io/otel/sdk v1.44.0
h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
-go.opentelemetry.io/otel/sdk v1.44.0/go.mod
h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
-go.opentelemetry.io/otel/sdk/log v0.18.0
h1:n8OyZr7t7otkeTnPTbDNom6rW16TBYGtvyy2Gk6buQw=
-go.opentelemetry.io/otel/sdk/log v0.18.0/go.mod
h1:C0+wxkTwKpOCZLrlJ3pewPiiQwpzycPI/u6W0Z9fuYk=
-go.opentelemetry.io/otel/sdk/log/logtest v0.18.0
h1:l3mYuPsuBx6UKE47BVcPrZoZ0q/KER57vbj2qkgDLXA=
-go.opentelemetry.io/otel/sdk/log/logtest v0.18.0/go.mod
h1:7cHtiVJpZebB3wybTa4NG+FUo5NPe3PROz1FqB0+qdw=
-go.opentelemetry.io/otel/sdk/metric v1.44.0
h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
-go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod
h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
-go.opentelemetry.io/otel/trace v1.44.0
h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
-go.opentelemetry.io/otel/trace v1.44.0/go.mod
h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
-go.opentelemetry.io/proto/otlp v1.9.0
h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
-go.opentelemetry.io/proto/otlp v1.9.0/go.mod
h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
+go.opentelemetry.io/otel/log v0.21.0
h1:SLsVDGmtyBrdw8/a2Z0bOIxou/+bN4z56GebH7T0LvA=
+go.opentelemetry.io/otel/log v0.21.0/go.mod
h1:iReetQrZL9Wyg84cCkOoCmqDHS5RCFfyxC7J+r8fn8g=
+go.opentelemetry.io/otel/metric v1.45.0
h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M=
+go.opentelemetry.io/otel/metric v1.45.0/go.mod
h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s=
+go.opentelemetry.io/otel/metric/x v0.67.0
h1:PcicCNZFkZ4bXfSooXdo3WN7RBOVOtjVdo1wD358Uns=
+go.opentelemetry.io/otel/metric/x v0.67.0/go.mod
h1:FBjCWZe6wgcqxcMtjdGiClDKXb2YxxXii0CXftE4QtI=
+go.opentelemetry.io/otel/sdk v1.45.0
h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw=
+go.opentelemetry.io/otel/sdk v1.45.0/go.mod
h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA=
+go.opentelemetry.io/otel/sdk/log v0.21.0
h1:QsE7XSR0ktQdKmRKGnR+f1ObGF32WG+7MER/P9KgmYc=
+go.opentelemetry.io/otel/sdk/log v0.21.0/go.mod
h1:m9mApjCoD2/1QuKCAptjv+BrG9WKOvQLVdNx+iBldTo=
+go.opentelemetry.io/otel/sdk/log/logtest v0.21.0
h1:X+JBBgKlswCGYsmgL0CnoUUtlE//VB345c84jYAYkdQ=
+go.opentelemetry.io/otel/sdk/log/logtest v0.21.0/go.mod
h1:HD1575K8e6sIFBBDd5tZB3t9DlMytWXq9FuR+Y4rfjE=
+go.opentelemetry.io/otel/sdk/metric v1.45.0
h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o=
+go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod
h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA=
+go.opentelemetry.io/otel/trace v1.45.0
h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag=
+go.opentelemetry.io/otel/trace v1.45.0/go.mod
h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc=
+go.opentelemetry.io/proto/otlp v1.11.0
h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk=
+go.opentelemetry.io/proto/otlp v1.11.0/go.mod
h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E=
go.opentelemetry.io/proto/otlp/profiles/v1development v0.2.0
h1:yXinc284C6bmzA1r9jk7MxAhrBIIOH3qwmqwBmylZrA=
go.opentelemetry.io/proto/otlp/profiles/v1development v0.2.0/go.mod
h1:ygxocDWPB6Y6bySAjxmHyTebjAJ8jcEUAZc03gu1pxk=
go.opentelemetry.io/proto/slim/otlp v1.9.0
h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE=
@@ -546,8 +546,8 @@
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod
h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
-golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
+golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
+golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
golang.org/x/oauth2 v0.36.0/go.mod
h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
@@ -626,17 +626,17 @@
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod
h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697
h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod
h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc=
-google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa
h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8=
-google.golang.org/genproto/googleapis/api
v0.0.0-20260526163538-3dc84a4a5aaa/go.mod
h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa
h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
-google.golang.org/genproto/googleapis/rpc
v0.0.0-20260526163538-3dc84a4a5aaa/go.mod
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d
h1:FarXi840EJWSHYTN3ERkADbPWjl307+FGrA22KAVjjc=
+google.golang.org/genproto/googleapis/api
v0.0.0-20260803160001-6ac0973c030d/go.mod
h1:K/+WGbmBY7aNW1HDw1fJnKYo10i0DkAX6pows00dLig=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d
h1:IL4hdHzcUv2l/gcg98/Rj3FbtE6axwqslOW8SW0C+S0=
+google.golang.org/genproto/googleapis/rpc
v0.0.0-20260803160001-6ac0973c030d/go.mod
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.19.0/go.mod
h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod
h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod
h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod
h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.2/go.mod
h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y=
-google.golang.org/grpc v1.83.1/go.mod
h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ=
+google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
+google.golang.org/grpc v1.83.2/go.mod
h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod
h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/inspektor-gadget-0.56.0/pkg/operators/otel-logs/otel-logs.go
new/inspektor-gadget-0.56.1/pkg/operators/otel-logs/otel-logs.go
--- old/inspektor-gadget-0.56.0/pkg/operators/otel-logs/otel-logs.go
2026-09-07 07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/pkg/operators/otel-logs/otel-logs.go
2026-09-25 10:16:17.000000000 +0200
@@ -22,6 +22,7 @@
"time"
log "github.com/sirupsen/logrus"
+ "go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc"
otellog "go.opentelemetry.io/otel/log"
sdklog "go.opentelemetry.io/otel/sdk/log"
@@ -200,19 +201,19 @@
return nil
}
-// copyBytesToLogValue copies the bytes and returns an otellog.Value.
-// This complies with otellog.BytesValue docs which state that the
+// copyBytesToLogValue copies the bytes and returns an attribute.Value.
+// This complies with attribute.ByteSliceValue docs which state that the
// passed slice must not be modified after the call.
-func copyBytesToLogValue(b []byte) otellog.Value {
+func copyBytesToLogValue(b []byte) attribute.Value {
cp := make([]byte, len(b))
copy(cp, b)
- return otellog.BytesValue(cp)
+ return attribute.ByteSliceValue(cp)
}
-// makeAttrPrep returns a function that will produce an otellog.KeyValue for
the provided field.
+// makeAttrPrep returns a function that will produce an attribute.KeyValue for
the provided field.
// It handles Bytes (raw string if valid UTF-8, base64 otherwise) and Bool
(Int64Value 0/1) specially and falls back
// to datasource.GetKeyValueFunc for supported scalar kinds.
-func makeAttrPrep(f datasource.FieldAccessor, nameOverride string) (func(data
datasource.Data) otellog.KeyValue, error) {
+func makeAttrPrep(f datasource.FieldAccessor, nameOverride string) (func(data
datasource.Data) attribute.KeyValue, error) {
name := f.FullName()
if nameOverride != "" {
name = nameOverride
@@ -223,13 +224,13 @@
return nil, nil
}
- kvf, err := datasource.GetKeyValueFunc[string, otellog.Value](f, name,
otellog.Int64Value, otellog.Float64Value, otellog.StringValue,
otellog.BoolValue, copyBytesToLogValue)
+ kvf, err := datasource.GetKeyValueFunc[attribute.Key,
attribute.Value](f, name, attribute.Int64Value, attribute.Float64Value,
attribute.StringValue, attribute.BoolValue, copyBytesToLogValue)
if err != nil {
return nil, err
}
- return func(data datasource.Data) otellog.KeyValue {
+ return func(data datasource.Data) attribute.KeyValue {
key, val := kvf(data)
- return otellog.KeyValue{Key: key, Value: val}
+ return attribute.KeyValue{Key: key, Value: val}
}, nil
}
@@ -242,7 +243,7 @@
fields := ds.Accessors(false)
annotations := ds.Annotations()
- prep := make([]func(data datasource.Data) otellog.KeyValue, 0)
+ prep := make([]func(data datasource.Data) attribute.KeyValue, 0)
kvCount := 0
var bodySet bool
@@ -271,7 +272,7 @@
if err != nil {
return
}
- record.SetBody(otellog.StringValue(s.(string)))
+
record.SetBody(attribute.StringValue(s.(string)))
})
bodySet = true
}
@@ -300,7 +301,7 @@
case FieldNameBody:
fns = append(fns, func(data datasource.Data,
record *otellog.Record) {
str, _ := f.String(data)
- record.SetBody(otellog.StringValue(str))
+
record.SetBody(attribute.StringValue(str))
})
bodySet = true
continue
@@ -363,7 +364,7 @@
var rec otellog.Record
// Collect attributes
- attribs := make([]otellog.KeyValue, 0, kvCount)
+ attribs := make([]attribute.KeyValue, 0, kvCount)
for _, p := range prep {
attribs = append(attribs, p(data))
}
@@ -378,7 +379,7 @@
// (empty string). This makes the exporter emit the
event encoded via
// attributes even when `logs.body` isn't set.
if !bodySet {
- rec.SetBody(otellog.StringValue(""))
+ rec.SetBody(attribute.StringValue(""))
}
rec.SetTimestamp(time.Now())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/inspektor-gadget-0.56.0/pkg/operators/otel-logs/otel-logs_test.go
new/inspektor-gadget-0.56.1/pkg/operators/otel-logs/otel-logs_test.go
--- old/inspektor-gadget-0.56.0/pkg/operators/otel-logs/otel-logs_test.go
2026-09-07 07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/pkg/operators/otel-logs/otel-logs_test.go
2026-09-25 10:16:17.000000000 +0200
@@ -20,6 +20,7 @@
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "go.opentelemetry.io/otel/attribute"
otellog "go.opentelemetry.io/otel/log"
sdklog "go.opentelemetry.io/otel/sdk/log"
@@ -90,21 +91,21 @@
rec := exporter.records[0]
// Check body is empty (fallback behavior)
- assert.Equal(t, otellog.StringValue(""), rec.Body())
+ assert.Equal(t, attribute.StringValue(""), rec.Body())
// Check attributes (fallback behavior: all fields as attributes)
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
require.Contains(t, attrMap, "foo")
- assert.Equal(t, otellog.StringValue("hello"), attrMap["foo"])
+ assert.Equal(t, attribute.StringValue("hello"), attrMap["foo"])
require.Contains(t, attrMap, "bar")
// Int32 is converted to Int64Value
- assert.Equal(t, otellog.Int64Value(42), attrMap["bar"])
+ assert.Equal(t, attribute.Int64Value(42), attrMap["bar"])
}
func TestPreStart_WithAnnotations(t *testing.T) {
@@ -160,18 +161,18 @@
rec := exporter.records[0]
// Check body is empty (default if not set)
- assert.Equal(t, otellog.StringValue(""), rec.Body())
+ assert.Equal(t, attribute.StringValue(""), rec.Body())
// Check attributes
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
// "custom.foo" should be present
require.Contains(t, attrMap, "custom.foo")
- assert.Equal(t, otellog.StringValue("hello"), attrMap["custom.foo"])
+ assert.Equal(t, attribute.StringValue("hello"), attrMap["custom.foo"])
// "bar" should NOT be present because we have at least one annotated
field, so fallback is disabled.
require.NotContains(t, attrMap, "bar")
@@ -227,12 +228,12 @@
rec := exporter.records[0]
// Check body is set
- assert.Equal(t, otellog.StringValue("body-content"), rec.Body())
+ assert.Equal(t, attribute.StringValue("body-content"), rec.Body())
// Check attributes
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
@@ -287,18 +288,18 @@
rec := exporter.records[0]
// Check body is empty (fallback behavior)
- assert.Equal(t, otellog.StringValue(""), rec.Body())
+ assert.Equal(t, attribute.StringValue(""), rec.Body())
// Check attributes (fallback behavior: all fields as attributes)
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
require.Contains(t, attrMap, "foo")
// Bytes are preserved as BytesValue
- assert.Equal(t, otellog.BytesValue([]byte("hello-bytes")),
attrMap["foo"])
+ assert.Equal(t, attribute.ByteSliceValue([]byte("hello-bytes")),
attrMap["foo"])
}
func TestPreStart_BoolField(t *testing.T) {
@@ -345,17 +346,17 @@
rec := exporter.records[0]
// Check body is empty (fallback behavior)
- assert.Equal(t, otellog.StringValue(""), rec.Body())
+ assert.Equal(t, attribute.StringValue(""), rec.Body())
// Check attributes (fallback behavior: all fields as attributes)
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
require.Contains(t, attrMap, "flag")
- assert.Equal(t, otellog.BoolValue(true), attrMap["flag"])
+ assert.Equal(t, attribute.BoolValue(true), attrMap["flag"])
}
func TestPreStart_ParentWithChildren_NotEmitted(t *testing.T) {
@@ -416,9 +417,9 @@
require.Len(t, exporter.records, 1)
rec := exporter.records[0]
- attrMap := make(map[string]otellog.Value)
- rec.WalkAttributes(func(kv otellog.KeyValue) bool {
- attrMap[kv.Key] = kv.Value
+ attrMap := make(map[string]attribute.Value)
+ rec.WalkAttributes(func(kv attribute.KeyValue) bool {
+ attrMap[string(kv.Key)] = kv.Value
return true
})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/inspektor-gadget-0.56.0/pkg/uprobetracer/usdt.go
new/inspektor-gadget-0.56.1/pkg/uprobetracer/usdt.go
--- old/inspektor-gadget-0.56.0/pkg/uprobetracer/usdt.go 2026-09-07
07:53:11.000000000 +0200
+++ new/inspektor-gadget-0.56.1/pkg/uprobetracer/usdt.go 2026-09-25
10:16:17.000000000 +0200
@@ -42,6 +42,13 @@
// of service from a crafted section with millions of tiny valid notes.
// 10,000 is far more than any legitimate binary would have.
maxNoteCount = 10000
+
+ // maxNoteSectionSize limits the total number of bytes consumed from the
+ // note section. maxNoteFieldSize and maxNoteCount only bound each note
+ // individually, so on their own they still allow 10,000 * 1 MiB of
notes.
+ // 16 MiB is far beyond any legitimate .note.stapsdt section, which is
+ // typically a few KiB.
+ maxNoteSectionSize = 16 * 1024 * 1024
)
type noteHeader struct {
@@ -55,11 +62,40 @@
semaphoreAddress uint64
}
+// vaddr2ElfOffset maps a virtual address to an offset in the ELF file.
+//
+// The program headers come from an untrusted file, so every field is
+// validated before use and the arithmetic is overflow-safe.
func vaddr2ElfOffset(f *elf.File, addr uint64) (uint64, error) {
for _, prog := range f.Progs {
- if prog.Vaddr <= addr && addr < (prog.Vaddr+prog.Memsz) {
- return addr - prog.Vaddr + prog.Off, nil
+ // Only PT_LOAD segments describe the memory image. Other
segment
+ // types overlap them, so a crafted one could otherwise be used
to
+ // redirect the mapping to an arbitrary file offset.
+ if prog.Type != elf.PT_LOAD {
+ continue
}
+ if addr < prog.Vaddr {
+ continue
+ }
+
+ // Compare the offset within the segment rather than
+ // prog.Vaddr+prog.Filesz: on ELFCLASS64 both come straight
from the
+ // file and their sum can wrap. On ELFCLASS32 they are widened
from
+ // 32-bit fields and cannot.
+ //
+ // Filesz, not Memsz: the tail of a segment that is only memory
+ // resident, such as .bss, has no corresponding bytes in the
file, so
+ // an address there has no file offset to attach to.
+ offsetInProg := addr - prog.Vaddr
+ if offsetInProg >= prog.Filesz {
+ continue
+ }
+
+ fileOffset := prog.Off + offsetInProg
+ if fileOffset < prog.Off {
+ continue
+ }
+ return fileOffset, nil
}
return 0, fmt.Errorf("malformed elf file: elf prog containing addr %x
not found", addr)
}
@@ -68,7 +104,22 @@
return (n + align - 1) / align * align
}
-func getUsdtInfo(filepath string, attachSymbol string) (*usdtAttachInfo,
error) {
+// getUsdtInfo parses the USDT notes of an ELF file that may come from an
+// untrusted container. Any panic escaping the parser is turned into an error
+// so that malformed input cannot terminate the privileged process: the parser
+// runs on a container-attach goroutine that has no panic recovery of its own.
+func getUsdtInfo(filepath string, attachSymbol string) (info *usdtAttachInfo,
err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ info = nil
+ err = fmt.Errorf("panic parsing USDT notes of %q: %v",
filepath, r)
+ }
+ }()
+
+ return parseUsdtNotes(filepath, attachSymbol)
+}
+
+func parseUsdtNotes(filepath string, attachSymbol string) (*usdtAttachInfo,
error) {
parts := strings.Split(attachSymbol, ":")
if len(parts) != 2 {
return nil, fmt.Errorf("invalid USDT section name: %q",
attachSymbol)
@@ -103,7 +154,17 @@
if noteSection.Type != elf.SHT_NOTE {
return nil, fmt.Errorf("section %q is not a note",
sdtNoteSectionName)
}
- notesReader := noteSection.Open()
+ // Reject compressed note sections, as pkg/utils/safeelf does for symbol
+ // and string tables. Section.Open() would transparently decompress
them,
+ // letting a small file expand to an arbitrary amount of data. No
toolchain
+ // compresses this section: it holds a few KiB of probe descriptors.
+ if noteSection.Flags&elf.SHF_COMPRESSED != 0 {
+ return nil, fmt.Errorf("compressed %q section not supported",
sdtNoteSectionName)
+ }
+ // Bound the bytes actually read. The size declared in the section
header
+ // is attacker-controlled and cannot be used for this: debug/elf does
not
+ // enforce it when reading through Open(), it only uses it to seek.
+ notesReader := io.LimitReader(noteSection.Open(), maxNoteSectionSize)
baseSection := elfReader.Section(sdtBaseSectionName)
if baseSection == nil {
@@ -118,6 +179,16 @@
wordSize = 8
}
+ // Address fields are wordSize bytes wide, so they must be read at that
+ // width. Reading them with Uint64 on an ELFCLASS32 file would read past
+ // the end of the desc slice and panic.
+ readAddr := func(b []byte) uint64 {
+ if wordSize == 8 {
+ return elfReader.ByteOrder.Uint64(b)
+ }
+ return uint64(elfReader.ByteOrder.Uint32(b))
+ }
+
// Minimum desc size for a stapsdt note: 3 address fields.
minDescSize := 3 * wordSize
@@ -170,9 +241,9 @@
return nil, fmt.Errorf("malformed stapsdt note: desc
too short (%d bytes, need %d)", len(desc), minDescSize)
}
- elfLocation := elfReader.ByteOrder.Uint64(desc[:wordSize])
- elfBase := elfReader.ByteOrder.Uint64(desc[wordSize :
2*wordSize])
- elfSemaphore := elfReader.ByteOrder.Uint64(desc[2*wordSize :
3*wordSize])
+ elfLocation := readAddr(desc[:wordSize])
+ elfBase := readAddr(desc[wordSize : 2*wordSize])
+ elfSemaphore := readAddr(desc[2*wordSize : 3*wordSize])
diff := baseSection.Addr - elfBase
location, err := vaddr2ElfOffset(elfReader.File,
elfLocation+diff)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/inspektor-gadget-0.56.0/pkg/uprobetracer/usdt_test.go
new/inspektor-gadget-0.56.1/pkg/uprobetracer/usdt_test.go
--- old/inspektor-gadget-0.56.0/pkg/uprobetracer/usdt_test.go 1970-01-01
01:00:00.000000000 +0100
+++ new/inspektor-gadget-0.56.1/pkg/uprobetracer/usdt_test.go 2026-09-25
10:16:17.000000000 +0200
@@ -0,0 +1,294 @@
+// Copyright 2026 The Inspektor Gadget authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package uprobetracer
+
+import (
+ "debug/elf"
+ "encoding/binary"
+ "os"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+const (
+ testStapsdtBaseAddr = 0x1000
+ testLoadSegmentSize = 0x10000
+)
+
+// buildUsdtELF builds a minimal little-endian ELF containing a single
+// PT_LOAD segment mapped at vaddr 0, a ".note.stapsdt" section holding one
+// stapsdt note with the given desc, and a ".stapsdt.base" section at
+// testStapsdtBaseAddr. It is used to exercise the USDT note parser with
+// inputs that a real toolchain would not produce.
+func buildUsdtELF(class elf.Class, desc []byte) []byte {
+ le := binary.LittleEndian
+ is64 := class == elf.ELFCLASS64
+
+ note := make([]byte, 12)
+ le.PutUint32(note[0:], 8) // NameSize,
len("stapsdt\x00")
+ le.PutUint32(note[4:], uint32(len(desc))) // DescSize
+ le.PutUint32(note[8:], 3) // Type, NT_STAPSDT
+ note = append(note, []byte("stapsdt\x00")...)
+ note = append(note, desc...)
+
+ shstr := []byte{0}
+ nameOff := func(s string) uint32 {
+ off := uint32(len(shstr))
+ shstr = append(shstr, []byte(s)...)
+ shstr = append(shstr, 0)
+ return off
+ }
+ offNote := nameOff(sdtNoteSectionName)
+ offBase := nameOff(sdtBaseSectionName)
+ offShstr := nameOff(".shstrtab")
+
+ var ehSize, phEntSize, shEntSize uint32
+ if is64 {
+ ehSize, phEntSize, shEntSize = 64, 56, 64
+ } else {
+ ehSize, phEntSize, shEntSize = 52, 32, 40
+ }
+ phOff := ehSize
+ noteOff := phOff + phEntSize
+ baseOff := noteOff + uint32(len(note))
+ shstrOff := baseOff
+ shOff := shstrOff + uint32(len(shstr))
+
+ buf := make([]byte, shOff+4*shEntSize)
+ copy(buf, []byte{0x7f, 'E', 'L', 'F'})
+ buf[4] = byte(class)
+ buf[5] = byte(elf.ELFDATA2LSB)
+ buf[6] = byte(elf.EV_CURRENT)
+
+ le.PutUint16(buf[16:], uint16(elf.ET_EXEC))
+ le.PutUint32(buf[20:], uint32(elf.EV_CURRENT))
+ if is64 {
+ le.PutUint16(buf[18:], uint16(elf.EM_X86_64))
+ le.PutUint64(buf[32:], uint64(phOff))
+ le.PutUint64(buf[40:], uint64(shOff))
+ le.PutUint16(buf[52:], uint16(ehSize))
+ le.PutUint16(buf[54:], uint16(phEntSize))
+ le.PutUint16(buf[56:], 1)
+ le.PutUint16(buf[58:], uint16(shEntSize))
+ le.PutUint16(buf[60:], 4)
+ le.PutUint16(buf[62:], 3)
+
+ p := buf[phOff:]
+ le.PutUint32(p[0:], uint32(elf.PT_LOAD))
+ le.PutUint32(p[4:], uint32(elf.PF_R|elf.PF_X))
+ le.PutUint64(p[8:], 0)
+ le.PutUint64(p[16:], 0)
+ le.PutUint64(p[32:], testLoadSegmentSize)
+ le.PutUint64(p[40:], testLoadSegmentSize)
+ } else {
+ le.PutUint16(buf[18:], uint16(elf.EM_386))
+ le.PutUint32(buf[28:], phOff)
+ le.PutUint32(buf[32:], shOff)
+ le.PutUint16(buf[40:], uint16(ehSize))
+ le.PutUint16(buf[42:], uint16(phEntSize))
+ le.PutUint16(buf[44:], 1)
+ le.PutUint16(buf[46:], uint16(shEntSize))
+ le.PutUint16(buf[48:], 4)
+ le.PutUint16(buf[50:], 3)
+
+ p := buf[phOff:]
+ le.PutUint32(p[0:], uint32(elf.PT_LOAD))
+ le.PutUint32(p[4:], 0)
+ le.PutUint32(p[8:], 0)
+ le.PutUint32(p[16:], testLoadSegmentSize)
+ le.PutUint32(p[20:], testLoadSegmentSize)
+ le.PutUint32(p[24:], uint32(elf.PF_R|elf.PF_X))
+ }
+
+ copy(buf[noteOff:], note)
+ copy(buf[shstrOff:], shstr)
+
+ putSection := func(idx int, name uint32, typ elf.SectionType, addr,
off, size uint32) {
+ b := buf[shOff+uint32(idx)*shEntSize:]
+ le.PutUint32(b[0:], name)
+ le.PutUint32(b[4:], uint32(typ))
+ if is64 {
+ le.PutUint64(b[16:], uint64(addr))
+ le.PutUint64(b[24:], uint64(off))
+ le.PutUint64(b[32:], uint64(size))
+ le.PutUint64(b[48:], 1)
+ } else {
+ le.PutUint32(b[12:], addr)
+ le.PutUint32(b[16:], off)
+ le.PutUint32(b[20:], size)
+ le.PutUint32(b[32:], 1)
+ }
+ }
+ putSection(0, 0, elf.SHT_NULL, 0, 0, 0)
+ putSection(1, offNote, elf.SHT_NOTE, 0, noteOff, uint32(len(note)))
+ putSection(2, offBase, elf.SHT_PROGBITS, testStapsdtBaseAddr, baseOff,
0)
+ putSection(3, offShstr, elf.SHT_STRTAB, 0, shstrOff, uint32(len(shstr)))
+
+ return buf
+}
+
+// usdtDesc builds a stapsdt note desc holding the three address fields at the
+// given word size, followed by the provider and probe names.
+func usdtDesc(wordSize int, location, base, semaphore uint64, provider, probe
string) []byte {
+ le := binary.LittleEndian
+ desc := make([]byte, 3*wordSize)
+ put := func(off int, v uint64) {
+ if wordSize == 8 {
+ le.PutUint64(desc[off:], v)
+ } else {
+ le.PutUint32(desc[off:], uint32(v))
+ }
+ }
+ put(0, location)
+ put(wordSize, base)
+ put(2*wordSize, semaphore)
+ desc = append(desc, []byte(provider+"\x00"+probe+"\x00")...)
+ return append(desc, make([]byte, alignUp(len(desc), 4)-len(desc))...)
+}
+
+func writeTestELF(t *testing.T, data []byte) string {
+ t.Helper()
+ path := filepath.Join(t.TempDir(), "target.elf")
+ require.NoError(t, os.WriteFile(path, data, 0o644))
+ return path
+}
+
+func TestGetUsdtInfo(t *testing.T) {
+ t.Parallel()
+
+ tests := []struct {
+ name string
+ class elf.Class
+ desc []byte
+ expectErr bool
+ expectAttach uint64
+ expectSem uint64
+ }{
+ {
+ name: "64bit",
+ class: elf.ELFCLASS64,
+ desc: usdtDesc(8, 0x2000, testStapsdtBaseAddr,
0x3000, "prov", "probe"),
+ expectAttach: 0x2000,
+ expectSem: 0x3000,
+ },
+ {
+ // A 32-bit binary is parsed with 4-byte address
fields. Reading
+ // them at a fixed 8-byte width used to panic.
+ name: "32bit",
+ class: elf.ELFCLASS32,
+ desc: usdtDesc(4, 0x2000, testStapsdtBaseAddr,
0x3000, "prov", "probe"),
+ expectAttach: 0x2000,
+ expectSem: 0x3000,
+ },
+ {
+ name: "32bit without semaphore",
+ class: elf.ELFCLASS32,
+ desc: usdtDesc(4, 0x2000, testStapsdtBaseAddr,
0, "prov", "probe"),
+ expectAttach: 0x2000,
+ expectSem: 0,
+ },
+ {
+ // Regression test: the desc length guard is
3*wordSize, so a
+ // 12-byte desc passes it on a 32-bit file. Reading the
address
+ // fields with Uint64 then read past the end of the
slice and
+ // panicked, killing the privileged process.
+ name: "32bit desc holding only the address fields",
+ class: elf.ELFCLASS32,
+ desc: make([]byte, 12),
+ expectErr: true,
+ },
+ {
+ name: "64bit desc too short",
+ class: elf.ELFCLASS64,
+ desc: make([]byte, 4),
+ expectErr: true,
+ },
+ {
+ name: "32bit desc too short",
+ class: elf.ELFCLASS32,
+ desc: make([]byte, 4),
+ expectErr: true,
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ t.Parallel()
+
+ path := writeTestELF(t, buildUsdtELF(test.class,
test.desc))
+
+ var info *usdtAttachInfo
+ var err error
+ require.NotPanics(t, func() {
+ info, err = getUsdtInfo(path, "prov:probe")
+ })
+
+ if test.expectErr {
+ require.Error(t, err)
+ return
+ }
+ require.NoError(t, err)
+ require.Equal(t, test.expectAttach, info.attachAddress)
+ require.Equal(t, test.expectSem, info.semaphoreAddress)
+ })
+ }
+}
+
+func TestGetUsdtInfoRecoversPanic(t *testing.T) {
+ t.Parallel()
+
+ // A truncated ELF header makes safeelf.NewFile fail, but the parser
must
+ // never propagate a panic to its caller whatever the input is.
+ path := writeTestELF(t, []byte{0x7f, 'E', 'L', 'F'})
+ require.NotPanics(t, func() {
+ _, err := getUsdtInfo(path, "prov:probe")
+ require.Error(t, err)
+ })
+}
+
+// setProg64Filesz patches the p_filesz field of the single 64-bit program
+// header built by buildUsdtELF. Prog64 lays out Type(4) Flags(4) Off(8)
+// Vaddr(8) Paddr(8) Filesz(8), and the program header follows the 64-byte
+// ELF header.
+func setProg64Filesz(data []byte, filesz uint64) {
+ binary.LittleEndian.PutUint64(data[64+32:], filesz)
+}
+
+func TestGetUsdtInfoAddressOutsideFileContent(t *testing.T) {
+ t.Parallel()
+
+ // The probe sits at vaddr 0x2000 while the segment only has file
content
+ // up to 0x100. The remainder is memory resident only, like .bss, so it
+ // has no file offset to attach to and must not resolve.
+ data := buildUsdtELF(elf.ELFCLASS64, usdtDesc(8, 0x2000,
testStapsdtBaseAddr, 0, "prov", "probe"))
+ setProg64Filesz(data, 0x100)
+
+ _, err := getUsdtInfo(writeTestELF(t, data), "prov:probe")
+ require.ErrorContains(t, err, "not found")
+}
+
+func TestGetUsdtInfoIgnoresNonLoadSegment(t *testing.T) {
+ t.Parallel()
+
+ // Same file, but the segment is no longer PT_LOAD. Only PT_LOAD
describes
+ // the memory image, so the address must not be resolved through it.
+ data := buildUsdtELF(elf.ELFCLASS64, usdtDesc(8, 0x2000,
testStapsdtBaseAddr, 0, "prov", "probe"))
+ binary.LittleEndian.PutUint32(data[64:], uint32(elf.PT_NOTE))
+
+ _, err := getUsdtInfo(writeTestELF(t, data), "prov:probe")
+ require.ErrorContains(t, err, "not found")
+}
++++++ inspektor-gadget.obsinfo ++++++
--- /var/tmp/diff_new_pack.6ZJ2AE/_old 2026-09-28 10:49:00.761388066 +0200
+++ /var/tmp/diff_new_pack.6ZJ2AE/_new 2026-09-28 10:49:00.765388234 +0200
@@ -1,5 +1,5 @@
name: inspektor-gadget
-version: 0.56.0
-mtime: 1788760391
-commit: e5a2855f270ca6557f4bd7e4fabaddf6760d8f50
+version: 0.56.1
+mtime: 1790324177
+commit: 815346241cb6727badef69b4db6ead6cf29eff2b
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/inspektor-gadget/vendor.tar.gz
/work/SRC/openSUSE:Factory/.inspektor-gadget.new.383539/vendor.tar.gz differ:
char 32, line 2