nested_attr学习笔记


笔者在复现nf_tables的相关漏洞的时候被这个nested_attr折磨了😭,因此今天总结一下😀

nla_for_each_nested

先考虑nla_for_each_nested这个宏:

首先看这个这个宏的定义:https://elixir.bootlin.com/linux/v5.10/source/include/net/netlink.h#L1931

此外看一下nla_oknla_next这两个函数:

这里的nla_len看起来是要包括头部的长度的?🤔:

NLA_ALIGN的含义就是关于4的倍数向上取整:

拆成for循环之后是这个样子的

nla_parse_nested_deprecated

例子在这里:https://elixir.bootlin.com/linux/v5.10/source/net/netfilter/nf_tables_api.c#L5167

下面来看具体函数:

对于传进nla_parse_nested_deprecated函数的attr首先被拆解出data传进去__nla_parse,然后还是走了nla_for_each_attr这个宏:(其实nla_parse_nested_deprecated代替了nla_for_each_nested来拆解🤔)

交互代码

看这个函数:(从这里attr->nla_len的赋值也可以看出来在nested_attr中nla_len是包含头部4字节的)

似乎就是从我们传入的attr这个地址开始,部署一个子attr在这里,然后返回新的空白地址;

参考


文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录