0x00 前言
这个Codeql一定要编译才能生成Database,是真的比较恼火,很多项目都不一定可以生成,环境就是一个非常大的坑,为了防止以后,所以将shiro1.2.4编译过程进行记录。
0x01 正文
首先是需要下载到shiro1.2.4的源码 https://codeload.github.com/apache/shiro/zip/refs/tags/shiro-root-1.2.4
然后如果直接使用mvn的话,会遇到一个问题:
[INFO] Required toolchain: jdk [ vendor='sun' version='1.6' ]
[ERROR] No toolchain matched from 1 found for type jdk
[ERROR] Cannot find matching toolchain definitions for the following toolchain types:
jdk [ vendor='sun' version='1.6' ]
这个问题的解决方案就是修改mvn的配置文件toolchains.xml
<toolchain>
<type>jdk</type>
<provides>
<version>1.6</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/path/to/jdk/1.6</jdkHome>
</configuration>
</toolchain>
添加这个内容,当然需要一个 jdk1.6,自己准备,没有的话可以私聊我
这个时候你通过codeql去创建database的时候就会抛出这个错误。
java.lang.UnsupportedClassVersionError: com/semmle/extractor/java/InterceptingAgent : Unsupported major.minor version 51.0
百思不得其解,找了很多的资料,虽然它明明白白的告诉你是版本问题,但是你发现你去调整jdk版本的时候,就会发现,不管怎么调整版本都是不对的。
最后发现了一个方法,那个mvn 配置文件里的jdk6 改成jdk7 就成了。。。。
在最后的时候发现,只要有配置就行,mvn不会管你配置的是不是jdk7。
但是在写规则的时候遇到了问题,没有办法找出调用链。