gpt4 book ai didi

java - 为什么 Fortify 将其标记为未发布的资源?

转载 作者:行者123 更新时间:2023-12-05 07:34:28 24 4
gpt4 key购买 nike

我有一个看起来像这样的类:

class Foo {
final ReadWriteLock lock = new ReentrantReadWriteLock();

Object read() {
lock.readLock().lock();
Object result;
try {
result = getResource();
} finally {
lock.readLock().unlock();
}
return result;
}
}

Fortify 标记方法 readUnreleased Resource: Synchronization , 声称已获得锁,然后在不释放锁的情况下直接退出该方法。

我的预感是,自从 lock字段是接口(interface)类型 ReadWriteLock , Fortify 无法分辨 lock.readLock()保证返回相同的 Lock两个调用的对象。因此,Fortify 看到 Lock我们锁定的没有存储在局部变量中,它认为 Lock因此丢失和泄漏。这是正确的吗?

最佳答案

我的预感是正确的。 Fortify 无法判断 lock.readLock() 为这两个调用返回相同的 Lock 对象,并将锁存储在 final 局部变量中解决了问题。

关于java - 为什么 Fortify 将其标记为未发布的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com