入门浅试记录一下,文档还没看完
安装
下载压缩包解压到一个位置
1 | export PATH=$PATH:<codeql_path> |
建立XNU database
cd 进xnu源码的存放位置
1 | codeql database create xnu-database --language=cpp --command="make SDKROOT=macosx ARCH_CONFIGS=X86_64 KERNEL_CONFIGS=RELEASE" |
查询测试
首先建立一个CodeQL package
1 | codeql pack init xnuql -e cpp |
然后添加cpp-all
1 | cd xnuql |
在package里新建一个ql文件,配合vscode的CodeQL插件就可以简单进行查询,来进行一点简单的测试先,参考这篇文章
可以查询到
1 | sopt.sopt_dir = SOPT_GET; |
在sogetoptlock()
有一条路径即使错误也不会设置错误返回值,然而copyout()
的第三个参数实际上是个sizeof
,事实上查看查询结果,有很多误报sizeof
的结果,可能是由于AST里还是有sizeof(arg)
在的原因吧。