当前位置: 首页 > 知识库问答 >
问题:

字节[]可能会公开返回引用的内部表示形式-findbug[duplicate]

司徒河
2023-03-14

我正在使用一些旧代码的旧项目中工作,findbug给出了一个字节[]的以下错误。

FindBugs:可以通过合并对可变对象的引用来公开内部表示。该代码将对外部可变对象的引用存储到对象的内部表示中。

我想知道是否有人能帮助我理解处理此错误的正确方法

private byte[] fileContent;

public FileUpload(String fileName, String fileExtension, long fileSize, byte[] fileContent, boolean attachedToPo, boolean programOwner) {
        this.fileName = fileName;
        this.fileExtension = fileExtension;
        this.fileSize = fileSize;
        this.fileContent = fileContent;
        this.attachedToPo = attachedToPo;
        this.programOwner = programOwner;
    }

public byte[] getFileContent() {
    return fileContent;
}

public void setFileContent(byte[] fileContent) {
    this.fileContent = fileContent;
}

编辑我理解这个错误的存在,我知道如何处理日期等问题。我只是有点困惑如何处理字节[]。

共有1个答案

盖玉石
2023-03-14

getFileContent()返回内部存储的字节数组。另一个得到它的类可能会开始修改它,从而也会更改原始类中的字节数组。getFileContent()应该返回数组的副本,而不是数组实例本身。

 类似资料:
  • 问题内容: 嗨,我收到了以下违规信息: 恶意代码漏洞-可能通过返回对可变对象的引用来公开内部表示 在我的代码中,我这样写 我们如何解决它。 问题答案: 当错误消息指出时,您正在返回内部状态(chkBox-很可能是对象内部状态的一部分,即使您没有显示其定义) 如果您-例如- 由于数组对象和所有Java对象一样都是通过引用传递的,因此这也将更改存储在对象内部的原始数组。 您最可能想解决的问题很简单 它

  • 我正面临一个问题,声纳,使用Java语言,下面的代码。声纳状态为“恶意代码漏洞——可能通过返回对可变对象的引用暴露内部表示”。 所有带有“primitive”[]的arrya都是可变的吗? 如何解决这个问题,仍然返回int数组? 如果不是int[],而是String[]、StringBuilder或AnyObject[]呢?解决方案是什么?

  • 问题内容: 在Python 3.x中,字符串由Unicode序数项组成。(请参见下面的语言参考引号。)Unicode字符串的内部表示是什么?是UTF-16吗? 字符串对象的项目是Unicode代码单元。Unicode代码单元由一项的字符串对象表示,并且可以保存表示Unicode序数的16位或32位值(序数的最大值在sys.maxunicode中给出,并且取决于Python的方式在编译时配置)。代理

  • 问题内容: 我想编写一个JavaScript函数,该函数以给定URL的字符串形式返回HTML内容。我在Stackoverflow上找到了类似的答案。 但是,似乎什么也没写。加载页面时,出现空白屏幕。 问题答案: 您需要在readystate == 4时返回,例如

  • 我得到声纳报告的以下违规行为:可能通过返回对可变对象的引用来暴露内部表示。 这是因为我从getter返回字符串[]。 我知道问题是什么,以及如何解决它,但通过stackoverflow上的几个线程,我注意到字符串[]和日期似乎发生了这种情况,例如: 恶意代码漏洞-通过返回对可变对象的引用可能暴露内部表示 恶意代码漏洞-通过合并对可变对象的引用,可能会暴露内部表示 但考虑到发生这种情况的原因,即返回

  • 我的dto类中有以下代码。 我在声纳中发现了一个错误,我不确定我到底做错了什么。 类是dto,方法是自动创建的setter方法。我做错了什么。如果有人能解释的话。这将是一个很大的帮助。