Skip to content

Commit fc51589

Browse files
committed
Bound offsets to make 4.14 verifier happy
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
1 parent 3498694 commit fc51589

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/stirling/source_connectors/socket_tracer/bcc_bpf/go_http2_trace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ static __inline int32_t get_fd_from_http_http2Framer(const void* framer_ptr,
147147
// moving forward it uses a conn member (net.Conn interface) instead.
148148
if (inner_intf_offset == -1) {
149149
inner_intf_offset = symaddrs->http2bufferedWriter_conn_offset;
150-
REQUIRE_SYMADDR(inner_intf_offset, kInvalidFD);
151150
conn_intf = true;
152151
}
152+
REQUIRE_SYMADDR(inner_intf_offset, kInvalidFD);
153153

154154
struct go_interface io_writer_interface;
155155
BPF_PROBE_READ_VAR(io_writer_interface, framer_ptr + symaddrs->http2Framer_w_offset);

src/stirling/source_connectors/socket_tracer/bcc_bpf/go_trace_common.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,21 @@ static __inline int32_t get_fd_from_conn_intf_core(struct go_interface conn_intf
174174
REQUIRE_SYMADDR(symaddrs->FD_Sysfd_offset, kInvalidFD);
175175

176176
if (conn_intf.type == symaddrs->internal_syscallConn) {
177+
// TODO(ddelnano): This can be dropped when 4.14 kernel support is dropped.
178+
if (symaddrs->syscallConn_conn_offset < 0 || symaddrs->syscallConn_conn_offset > 1024) {
179+
return kInvalidFD;
180+
}
177181
REQUIRE_SYMADDR(symaddrs->syscallConn_conn_offset, kInvalidFD);
178182
const int kSyscallConnConnOffset = 0;
179183
bpf_probe_read(&conn_intf, sizeof(conn_intf),
180184
conn_intf.ptr + symaddrs->syscallConn_conn_offset);
181185
}
182186

183187
if (conn_intf.type == symaddrs->tls_Conn) {
188+
// TODO(ddelnano): This can be dropped when 4.14 kernel support is dropped.
189+
if (symaddrs->tlsConn_conn_offset < 0 || symaddrs->tlsConn_conn_offset > 1024) {
190+
return kInvalidFD;
191+
}
184192
REQUIRE_SYMADDR(symaddrs->tlsConn_conn_offset, kInvalidFD);
185193
bpf_probe_read(&conn_intf, sizeof(conn_intf), conn_intf.ptr + symaddrs->tlsConn_conn_offset);
186194
}

0 commit comments

Comments
 (0)