output: #fixed code
                                  private void downloadLoeschen(boolean dauerhaft) {
          int rows[] = tabelle.getSelectedRows();
          if (rows.length > 0) {
              String[] urls = new String[rows.length];
              for (int i = 0; i < rows.length; ++i) {
                  urls[i] = tabelle.getModel().getValueAt(tabelle.convertRowIndexToModel(rows[i]), DatenDownload.DOWNLOAD_URL_NR).toString();
              }
              for (int i = 0; i < urls.length; ++i) {
                  DatenDownload download = ddaten.listeDownloads.getDownloadByUrl(urls[i]);
                  if (download == null) {
                      // wie kann das sein??
                      Log.debugMeldung("Gits ja gar nicht");
                  } else {
                      if (dauerhaft) {
                          if (download.istAbo()) {
                              // ein Abo wird zusätzlich ins Logfile geschrieben
                              ddaten.erledigteAbos.zeileSchreiben(download.arr[DatenDownload.DOWNLOAD_THEMA_NR],
                                      download.arr[DatenDownload.DOWNLOAD_TITEL_NR], urls[i]);
                          }
                          ddaten.listeDownloads.delDownloadByUrl(urls[i]);
                      }// if (dauerhaft) {
                      ddaten.starterClass.filmLoeschen(urls[i]);
                  }
              }
          } else {
              new HinweisKeineAuswahl().zeigen();
          }
      }
input: #vulnerable code 
                                  private void downloadLoeschen(boolean dauerhaft) {
          int rows[] = tabelle.getSelectedRows();
          if (rows.length > 0) {
              for (int i = rows.length - 1; i >= 0; --i) {
                  int delRow = tabelle.convertRowIndexToModel(rows[i]);
                  String url = tabelle.getModel().getValueAt(delRow, DatenDownload.DOWNLOAD_URL_NR).toString();
                  DatenDownload download = ddaten.listeDownloads.getDownloadByUrl(url);
                  if (dauerhaft) {
                      if (download.istAbo()) {
                          // ein Abo wird zusätzlich ins Logfile geschrieben
                          ddaten.erledigteAbos.zeileSchreiben(download.arr[DatenDownload.DOWNLOAD_THEMA_NR],
                                  download.arr[DatenDownload.DOWNLOAD_TITEL_NR],
                                  url);
                      }
                      ddaten.listeDownloads.delDownloadByUrl(url);
                  }
                  ddaten.starterClass.filmLoeschen(tabelle.getModel().getValueAt(delRow, DatenDownload.DOWNLOAD_URL_NR).toString());
                  ((TModelDownload) tabelle.getModel()).removeRow(delRow);
              }
              setInfo();
          } else {
              new HinweisKeineAuswahl().zeigen();
          }
      } 
                              #location 9 
                              #vulnerability type NULL_DEREFERENCE