Сбор мусора Java с нулевым разыменованием (из сканирования Fortify) - PullRequest
0 голосов
/ 04 мая 2018

Моя Java немного ржавая ... особенно в отношении сборки мусора, поэтому я мог бы немного помочь найти решение о том, как это неправильно заканчивается в «null» в конце этого:

public void copyFileBuffered(String inPUT, String outPUT) throws
        FileNotFoundException, IOException {

    InputStream is = null;
    OutputStream os = null;
    try{
        if(inPUT != null)
        is = new FileInputStream(inPUT);
        if(outPUT != null)
        os = new FileOutputStream(outPUT);
        int count = 0;
        byte b[] = new byte[BLKSIZ];
        while ((count = is.read(b)) != -1) {  /** FORTIFY ERROR LINE */
            os.write(b, 0, count);
        }
    }
    catch(Exception e){}
    finally{
        if(is != null)
            is.close();
        if(os != null)
            os.close();
    }

}

из того, что я вижу, об этом позаботился "os = new FileOutputStream (outPUT);" FORTIFY: метод copyFileBuffered () разыменовывает нулевой указатель.

1 Ответ

0 голосов
/ 04 мая 2018

Ваши операторы if являются дословными и явными в изложении следующего:

  • Если inPUT равно null, то is равно null.
  • Если outPUT равно null, то os равно null.

Статический анализ скажет вашему коду, что вы могли бы разыменовать null, что было бы существенной ошибкой.

Вы не говорите нам, откуда они берутся, поэтому, если вы сталкиваетесь с NullPointerException, убедитесь, что ни inPUT, ни outPUT на самом деле не передаются как null этому чанку кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...