diff --git a/aya-bpf-macros/src/cgroup_sock.rs b/aya-bpf-macros/src/cgroup_sock.rs index dfc24561..8facb9c1 100644 --- a/aya-bpf-macros/src/cgroup_sock.rs +++ b/aya-bpf-macros/src/cgroup_sock.rs @@ -12,6 +12,9 @@ pub(crate) struct CgroupSock { impl CgroupSock { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result { + if attrs.is_empty() { + abort!(attrs, "missing attach type") + } let item: ItemFn = syn::parse2(item)?; let attach_type: Ident = syn::parse2(attrs)?; match attach_type.to_string().as_str() { diff --git a/aya-bpf-macros/src/cgroup_sock_addr.rs b/aya-bpf-macros/src/cgroup_sock_addr.rs index 6ca0f20e..43870c54 100644 --- a/aya-bpf-macros/src/cgroup_sock_addr.rs +++ b/aya-bpf-macros/src/cgroup_sock_addr.rs @@ -15,6 +15,7 @@ impl CgroupSockAddr { if attrs.is_empty() { abort!(attrs, "missing attach type") } + let item = syn::parse2(item)?; let attach_type: Ident = syn::parse2(attrs)?; match attach_type.to_string().as_str() { "connect4" | "connect6" | "bind4" | "bind6" | "getpeername4" | "getpeername6" @@ -22,7 +23,6 @@ impl CgroupSockAddr { | "recvmsg6" => (), _ => abort!(attach_type, "invalid attach type"), } - let item = syn::parse2(item)?; Ok(CgroupSockAddr { item, attach_type: attach_type.to_string(), diff --git a/aya-bpf-macros/src/cgroup_sockopt.rs b/aya-bpf-macros/src/cgroup_sockopt.rs index 11440f12..b5bba0dd 100644 --- a/aya-bpf-macros/src/cgroup_sockopt.rs +++ b/aya-bpf-macros/src/cgroup_sockopt.rs @@ -15,12 +15,12 @@ impl CgroupSockopt { if attrs.is_empty() { abort!(attrs, "expected attach type"); } + let item = syn::parse2(item)?; let attach_type: Ident = syn::parse2(attrs)?; match attach_type.to_string().as_str() { "getsockopt" | "setsockopt" => (), _ => abort!(attach_type, "invalid attach type"), } - let item = syn::parse2(item)?; Ok(CgroupSockopt { item, attach_type: attach_type.to_string(), diff --git a/aya-bpf-macros/src/kprobe.rs b/aya-bpf-macros/src/kprobe.rs index 06eb9e59..4fb9895f 100644 --- a/aya-bpf-macros/src/kprobe.rs +++ b/aya-bpf-macros/src/kprobe.rs @@ -33,12 +33,12 @@ pub(crate) struct KProbe { impl KProbe { pub(crate) fn parse(kind: KProbeKind, attrs: TokenStream, item: TokenStream) -> Result { + let item = syn::parse2(item)?; let mut args = syn::parse2(attrs)?; let function = pop_string_arg(&mut args, "function"); let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::().unwrap()); err_on_unknown_args(&args)?; - let item = syn::parse2(item)?; Ok(KProbe { kind, item, diff --git a/aya-bpf-macros/src/map.rs b/aya-bpf-macros/src/map.rs index 16d59077..21f9a8fa 100644 --- a/aya-bpf-macros/src/map.rs +++ b/aya-bpf-macros/src/map.rs @@ -14,8 +14,8 @@ pub(crate) struct Map { impl Map { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result { - let mut args = syn::parse2(attrs)?; let item: ItemStatic = syn::parse2(item)?; + let mut args = syn::parse2(attrs)?; let name = name_arg(&mut args).unwrap_or_else(|| item.ident.to_string()); Ok(Map { item, name }) } diff --git a/aya-bpf-macros/src/tracepoint.rs b/aya-bpf-macros/src/tracepoint.rs index 85bce4eb..0e2a7cf6 100644 --- a/aya-bpf-macros/src/tracepoint.rs +++ b/aya-bpf-macros/src/tracepoint.rs @@ -15,8 +15,8 @@ pub(crate) struct TracePoint { impl TracePoint { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result { - let mut args = syn::parse2(attrs)?; let item = syn::parse2(item)?; + let mut args = syn::parse2(attrs)?; let name = pop_string_arg(&mut args, "name"); let category = pop_string_arg(&mut args, "category"); err_on_unknown_args(&args)?; diff --git a/aya-bpf-macros/src/uprobe.rs b/aya-bpf-macros/src/uprobe.rs index f9b8fac8..7144f30f 100644 --- a/aya-bpf-macros/src/uprobe.rs +++ b/aya-bpf-macros/src/uprobe.rs @@ -35,14 +35,13 @@ pub(crate) struct UProbe { impl UProbe { pub(crate) fn parse(kind: UProbeKind, attrs: TokenStream, item: TokenStream) -> Result { + let item = syn::parse2(item)?; let mut args = syn::parse2(attrs)?; let path = pop_string_arg(&mut args, "path"); let function = pop_string_arg(&mut args, "function"); let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::().unwrap()); let sleepable = pop_bool_arg(&mut args, "sleepable"); err_on_unknown_args(&args)?; - - let item = syn::parse2(item)?; Ok(UProbe { kind, item,