diff --git a/services/ja4ebpf/bpf/uprobe_ssl.c b/services/ja4ebpf/bpf/uprobe_ssl.c index 5af38bc..0aa6f32 100644 --- a/services/ja4ebpf/bpf/uprobe_ssl.c +++ b/services/ja4ebpf/bpf/uprobe_ssl.c @@ -152,8 +152,10 @@ int uretprobe_ssl_read_exit(struct pt_regs *ctx) __u32 data_len = (retval > MAX_SSL_DATA) ? MAX_SSL_DATA : (__u32)retval; evt->data_len = data_len; - /* Copier depuis l'espace utilisateur */ - bpf_probe_read_user(evt->data, data_len & (MAX_SSL_DATA - 1), (void *)args->buf_ptr); + /* Copier depuis l'espace utilisateur (data_len déjà limité à MAX_SSL_DATA) */ + if (data_len > 0) { + bpf_probe_read_user(evt->data, data_len, (void *)args->buf_ptr); + } /* Retrouver les infos de connexion via ssl_ptr */ struct ssl_conn_info *conn = bpf_map_lookup_elem(&ssl_conn_map, &args->ssl_ptr); @@ -229,7 +231,10 @@ int uretprobe_ssl_write_exit(struct pt_regs *ctx) __u32 data_len = (retval > MAX_SSL_DATA) ? MAX_SSL_DATA : (__u32)retval; evt->data_len = data_len; - bpf_probe_read_user(evt->data, data_len & (MAX_SSL_DATA - 1), (void *)args->buf_ptr); + /* Copier depuis l'espace utilisateur (data_len déjà limité à MAX_SSL_DATA) */ + if (data_len > 0) { + bpf_probe_read_user(evt->data, data_len, (void *)args->buf_ptr); + } struct ssl_conn_info *conn = bpf_map_lookup_elem(&ssl_conn_map, &args->ssl_ptr); if (conn) {