#fixed code
                                public void meldenFertig(String sender) {
        //wird ausgeführt wenn Sender beendet ist
        int MAX_SENDER = 15, MAX1 = 24, MAX2 = 30;
        Log.systemMeldung("Fertig " + sender + ": " + DatumZeit.getJetzt_HH_MM_SS());
        RunSender run = listeSenderLaufen.senderFertig(sender);
        if (run != null) {
            // Zeile 1
            fertigMeldung.add("");
            String zeile = "==================================================================================================================";
            fertigMeldung.add(zeile);
            zeile = textLaenge(MAX_SENDER, run.sender);
            zeile += textLaenge(MAX1, "Laufzeit[Min.]: " + run.getLaufzeitMinuten());
            zeile += textLaenge(MAX1, "      Seiten: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER, run.sender));
            String nameFilmliste[] = getMReaderNameSenderMreader(run.sender).getNameSenderFilmliste();
            if (nameFilmliste.length == 1) {
                zeile += "Filme: " + listeFilmeNeu.countSender(nameFilmliste[0]);
            } else {
                for (int i = 0; i < nameFilmliste.length; i++) {
                    zeile += "Filme [" + nameFilmliste[i] + "]: " + listeFilmeNeu.countSender(nameFilmliste[i]) + "  ";
                }
            }
            fertigMeldung.add(zeile);
            // Zeile 2
            zeile = textLaenge(MAX_SENDER, "");
            zeile += textLaenge(MAX1, "    Ladefehler: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_FEHlER, run.sender));
            zeile += textLaenge(MAX1, "Fehlversuche: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_FEHLERVERSUCHE, run.sender));
            zeile += textLaenge(MAX2, "Wartezeit Fehler[s]: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_WARTEZEIT_FEHLVERSUCHE, run.sender));
            String groesse = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE, run.sender) == 0) ? "<1" : Long.toString(GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE, run.sender));
            zeile += textLaenge(MAX1, "Daten[MByte]: " + groesse);
            fertigMeldung.add(zeile);
        }
        // wird einmal aufgerufen, wenn alle Sender fertig sind
        if (listeSenderLaufen.listeFertig()) {
            Log.progressEnde();
            int anzFilme = listeFilmeNeu.size();
            if (!senderAllesLaden || updateFilmliste) {
                // alte Filme eintragen wenn angefordert oder nur ein update gesucht wurde
                listeFilmeNeu.updateListe(listeFilmeAlt, true /* über den Index vergleichen */);
            }
            listeFilmeNeu.sort();
            listeFilmeAlt = null; // brauchmer nicht mehr
            // FilmlisteMetaDaten
            listeFilmeNeu.metaDatenSchreiben(!Daten.filmeLaden.getStop() /* löschen */);
            stopZeit = new Date(System.currentTimeMillis());

            SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
            int sekunden;
            try {
                sekunden = Math.round((stopZeit.getTime() - startZeit.getTime()) / (1000));
            } catch (Exception ex) {
                sekunden = -1;
            }
            Log.systemMeldung("");
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("==  Sender  ======================================================================================================");
            Log.systemMeldung("");
            Iterator<String> it = fertigMeldung.iterator();
            while (it.hasNext()) {
                Log.systemMeldung(it.next());
            }
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("");
            Log.systemMeldung("        Filme geladen: " + anzFilme);
            Log.systemMeldung("       Seiten geladen: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER));
            String groesse = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE) == 0) ? "<1" : Long.toString(GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE));
            Log.systemMeldung(" Summe geladen[MByte]: " + groesse);
            if (sekunden <= 0) {
                sekunden = 1;
            }
            long kb = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE) * 1024) / sekunden;
            Log.systemMeldung("     -> Rate[kByte/s]: " + (kb == 0 ? "<1" : kb));
            Log.systemMeldung("     ->    Dauer[Min]: " + (sekunden / 60 == 0 ? "<1" : sekunden / 60));
            Log.systemMeldung("            ->  Start: " + sdf.format(startZeit));
            Log.systemMeldung("            ->   Ende: " + sdf.format(stopZeit));
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("==================================================================================================================");
            notifyFertig(new ListenerFilmeLadenEvent(sender, "", listeSenderLaufen.getMax(), listeSenderLaufen.getProgress()));
        } else {
            //nur ein Sender fertig
            notifyProgress(new ListenerFilmeLadenEvent(sender, "", listeSenderLaufen.getMax(), listeSenderLaufen.getProgress()));
        }
    }
#vulnerable code 
                                public void meldenFertig(String sender) {
        //wird ausgeführt wenn Sender beendet ist
        int MAX_SENDER = 15, MAX1 = 24, MAX2 = 30;
        Log.systemMeldung("Fertig " + sender + ": " + DatumZeit.getJetzt_HH_MM_SS());
        RunSender run = listeSenderLaufen.senderFertig(sender);
        if (run != null) {
            // Zeile 1
            fertigMeldung.add("");
            String zeile = "==================================================================================================================";
            fertigMeldung.add(zeile);
            zeile = textLaenge(MAX_SENDER, run.sender);
            zeile += textLaenge(MAX1, "Laufzeit[Min.]: " + run.getLaufzeitMinuten());
            zeile += textLaenge(MAX1, "      Seiten: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER, run.sender));
            String nameFilmliste[] = getMReaderNameSenderMreader(run.sender).getNameSenderFilmliste();
            if (nameFilmliste.length == 1) {
                zeile += "Filme: " + listeFilmeNeu.countSender(nameFilmliste[0]);
            } else {
                for (int i = 0; i < nameFilmliste.length; i++) {
                    zeile += "Filme [" + nameFilmliste[i] + "]: " + listeFilmeNeu.countSender(nameFilmliste[i]) + "  ";
                }
            }
            fertigMeldung.add(zeile);
            // Zeile 2
            zeile = textLaenge(MAX_SENDER, "");
            zeile += textLaenge(MAX1, "    Ladefehler: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_FEHlER, run.sender));
            zeile += textLaenge(MAX1, "Fehlversuche: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_FEHLERVERSUCHE, run.sender));
            zeile += textLaenge(MAX2, "Wartezeit Fehler[s]: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER_WARTEZEIT_FEHLVERSUCHE, run.sender));
            String groesse = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE, run.sender) == 0) ? "<1" : Long.toString(GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE, run.sender));
            zeile += textLaenge(MAX1, "Daten[MByte]: " + groesse);
            fertigMeldung.add(zeile);
        }
        // wird einmal aufgerufen, wenn alle Sender fertig sind
        if (listeSenderLaufen.listeFertig()) {
            Log.progressEnde();
            int anzFilme = listeFilmeNeu.size();
            if (!allesLaden) {
                // alte Filme eintragen
                listeFilmeNeu.updateListe(listeFilmeAlt, true /* über den Index vergleichen */);
            }
            listeFilmeNeu.sort();
            listeFilmeAlt = null; // brauchmer nicht mehr
            // FilmlisteMetaDaten
            listeFilmeNeu.metaDatenSchreiben(!Daten.filmeLaden.getStop() /* löschen */);
            stopZeit = new Date(System.currentTimeMillis());

            SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
            int sekunden;
            try {
                sekunden = Math.round((stopZeit.getTime() - startZeit.getTime()) / (1000));
            } catch (Exception ex) {
                sekunden = -1;
            }
            Log.systemMeldung("");
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("==  Sender  ======================================================================================================");
            Log.systemMeldung("");
            Iterator<String> it = fertigMeldung.iterator();
            while (it.hasNext()) {
                Log.systemMeldung(it.next());
            }
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("");
            Log.systemMeldung("        Filme geladen: " + anzFilme);
            Log.systemMeldung("       Seiten geladen: " + GetUrl.getSeitenZaehler(GetUrl.LISTE_SEITEN_ZAEHLER));
            String groesse = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE) == 0) ? "<1" : Long.toString(GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE));
            Log.systemMeldung(" Summe geladen[MByte]: " + groesse);
            if (sekunden <= 0) {
                sekunden = 1;
            }
            long kb = (GetUrl.getSeitenZaehler(GetUrl.LISTE_SUMME_BYTE) * 1024) / sekunden;
            Log.systemMeldung("     -> Rate[kByte/s]: " + (kb == 0 ? "<1" : kb));
            Log.systemMeldung("     ->    Dauer[Min]: " + (sekunden / 60 == 0 ? "<1" : sekunden / 60));
            Log.systemMeldung("            ->  Start: " + sdf.format(startZeit));
            Log.systemMeldung("            ->   Ende: " + sdf.format(stopZeit));
            Log.systemMeldung("");
            Log.systemMeldung("==================================================================================================================");
            Log.systemMeldung("==================================================================================================================");
            notifyFertig(new ListenerFilmeLadenEvent(sender, "", listeSenderLaufen.getMax(), listeSenderLaufen.getProgress()));
        } else {
            //nur ein Sender fertig
            notifyProgress(new ListenerFilmeLadenEvent(sender, "", listeSenderLaufen.getMax(), listeSenderLaufen.getProgress()));
        }
    } 
                            #location 36 
                            #vulnerability type THREAD_SAFETY_VIOLATION