Segmentation foult nur beim Debuggen ???



  • Hallo @ all - bin wiedermal lästig 🙂

    ich bekomme den Fehler lustigerweise nur beim debuggen (siehe Link)

    Irgendwie schieße ich über das Ziel hinaus obwohl meine Zählervariable (ibuf = 24655) noch unterhalb der size (24794) ist.

    Wie auch im Bild (unten) ersichtlich sollte er bei OMDS (markiert) aufhören was aber nicht passiert.
    Hier mal der ganze Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (){
        //Datei öffnen
        FILE *file;
        file = fopen("Testdaten213.xml","r");
        // Testen ob öffnen geklappt hat
        if (!file){
            printf("Konnte Datei %s nicht öffnen", file);  // Gehört noch ausgebessert da file bei Fehler null ist!
            return 1;
        }
    
        // Größe von file ermitteln
        fseek(file,0,SEEK_END);
        int size = ftell(file);
        fseek(file,0,SEEK_SET);
    
        // Speicher reservieren   
        char *buftext = (char*) malloc(size+1 * sizeof(char));
        char *text = (char*) malloc(size+1 * sizeof(char));
    
        if (buftext == NULL){
            printf("konnte Speicher nicht reservieren!");
            return 1;
        }
    
    
        int i = 0, ibuf = 0;   
        char nodenamestart[60] = "" , nodenameende[60] = "";
    
        // File in Buffer schreiben
        fread(buftext,size,1,file);
        // Endbyte setzen
        buftext[size+1] = '\0';
    
        //file schließen
        fclose(file);
    
        while (buftext[ibuf] != '\0'){
            if (ibuf == size+1)
                break;
            //Nodenamen vergleichen (Start und End)
            if (buftext[ibuf] != '>' || (buftext[ibuf] != '/' && buftext[ibuf+1] != '>'))  // > oder />
            { 
                if (buftext[ibuf] == '\n'){
                    ibuf++;
                    continue;
                }
    
                if (buftext[ibuf] == '<'){  // Anfang Node   <......>
    
                    if(buftext[ibuf] == '<' && buftext[ibuf+1] == '/'){ // Ende HauptNode  </....>
                        ibuf+=2;
                        while (buftext[ibuf] != '>')
                            nodenameende[i++] = buftext[ibuf++];  // Nodename Ende
                        nodenameende[i] = '\0';
                        i = 0;
                        printf("Nodenameende: %s\n", nodenameende); 
                        continue;  // Code unten wird übersprungen!
                    }
    
                    ibuf++;  // Anfang überspringen: <
                    while (buftext[ibuf] != ' ')  // Nach Nodenamen kommt Leerzeichen! und dann Innertext
                    {
                        if (buftext[ibuf] == '?')  //xml Version usw. - um das ? nicht mitzunehmen um 1 erhöhen
                            ibuf++;
    
                        nodenamestart[i++] = buftext[ibuf++];  // Nodename Start
                    }
                    nodenamestart[i] = '\0';
                    i = 0;
                    printf("Nodenamestart: %s\n", nodenamestart);  
    
                    // Innertext:
                    while (buftext[ibuf] != '>'){  // bis zum Ende der Node durchlaufen
                        text[i++] = buftext[ibuf++];
                    }
                    text[i] = '\0';
                    
    
                    if (text[i-1] == '/')
                        printf("Child - Innertext: %s\n", text);
                    else
                        printf("Innertext: %s\n", text);
                    printf("Nodeende: %s\n", nodenamestart);
    
                    i = 0;
                }                            
            }            
        ibuf++;
        }
        free(buftext);
        free(text);
        return 0;
    }
    

    und meine XML file fals es wer testen will:

    <?xml version="1.0" encoding="UTF-8"?>
    <OMDS xmlns="urn:omds20" xmlns:asx="http://www.sap.com/abapxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <PAKET DVRNrAbs="00099999" MaklerID="109999" OMDSVersion="213-00" PaketInhCd="VM" PaketUmfCd="G" PaketZpktErstell="2021-01-01T15:12:39" VUNr="099">
    
    <PERSON  Hausnr="99" LandesCd="AUT" Ort="Kaindorf bei Hartberg" PLZ="8224" PersArtCd="S" Personennr="2918745850@13866256" Strasse="Kaindorf">
      <SONSTIGE_PERSON Name="Ihr Versicherungsmakler GmbH" SonstPersArtCd="0"/>
    </PERSON>
    <PERSON  Hausnr="88" LandesCd="AUT" Ort="Kaindorf bei Hartberg" PLZ="8224" PersArtCd="N" Personennr="2918965473@15462572" Strasse="Strada">
      <NATUERLICHE_PERSON Familienname="Famnam" FamilienstandCd="0" Gebdat="1973-05-14" GeschlechtCd="2" LandesCd="AUT" Vorname="Vornam"/>
    </PERSON>
    <PERSON  Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072343@11435234" Strasse="Versicherungsstraße">
      <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1966-04-29" GeschlechtCd="1" LandesCd="AUT" Vorname="Nikolaus"/>
      <EL-Text TxtArtCd="ANR" TxtInhalt="Herr"/>
      <EL-Text TxtArtCd="TIT" TxtInhalt="Ing."/>
    </PERSON>
    <PERSON  Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072344@11435237" Strasse="Versicherungsstraße">
      <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1967-05-14" GeschlechtCd="2" LandesCd="AUT" Vorname="Silvia"/>
      <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/>
      <EL-Text TxtArtCd="TIT" TxtInhalt="Mag."/>
    </PERSON>
    <PERSON  Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072345@11435242" Strasse="Versicherungsstraße">
      <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1996-02-03" GeschlechtCd="2" LandesCd="AUT" Vorname="Caroline"/>
      <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/>
    </PERSON>
    <PERSON  Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072346@11435245" Strasse="Versicherungsstraße">
      <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1998-03-02" GeschlechtCd="2" LandesCd="AUT" Vorname="Hanna"/>
      <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/>
    </PERSON>
    
    <!-- KFZ -->
    <VERTRAG  AendGrundCd="NEU" AendGrundbez="NEUZUGANG" DurchfDat="2017-03-20" GueltigBeg="2017-03-14" Hptfaelligkeit="--04-01" Polizzennr="XX-I000.123" PraemieBtoVtg="10.00" PraemieNtoVtg="9.01" Vermnr="ABCDEF" VertragsID="I000123F" VtgBeg="2017-03-14" VtgEnd="2999-12-31" VtgProdCd="KF" VtgProdukt="EURO-KFZ-Schutz" VtgSparteCd="BKF" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="1" ZahlWegCd="01">
      <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/>
      <VERS_OBJEKT ObjLfnr="1" VersObjTxt="CHEVAL LIBERTE GOLD PULLMAN V2 CHEVAL LIBERTE">
        <VERS_KFZ AntriebsArtCd="0" Erstzulassdat="2017-03-14" Fahrgestnr="VKD20021VGP002110" FzgArtCd="ANH" Handelsbez="GOLD PULLMAN V2" Hubraum="0" Katkz="0" LandesCd="AUT" Leistung="0" Marke="CHEVAL LIBERTE" Modelljahr="2017" Nutzlast="1720" Plaetze="0" Pol_Kennz="XX-1234X" TypVarVer="CHEVAL LIBERTE" VerwendzweckCd="01" HGeschw="180" Kraftstoffverbr_NEFZ="5.98" VerbrEinhCd="L"/>
      </VERS_OBJEKT>
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="10.00" PraemieNtoSp="9.01" SichergKz="N" SondervereinbarungKz="N" SpartenCd="AH" SpartenErweiterung="ABAH000000" Spartentxt="Haftpflicht 15Mio" VerbandSparteCd="071">
        <EL-Entscheidungsfrage EFrageAntw="N" EFrageCd="A02"/>
        <EL-Klausel Klauselnr="H53-F"/>
        <EL-Klausel Klauselnr="HA3-F"/>
        <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderkosten" PraemKorrWert="31.65"/>
        <EL-Zeitraum ZRArtCd="9" ZRBeg="2017-03-14" ZREnd="2018-04-01"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Personenschaden" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="8200000.00" VSBez="Haftpflicht Personenschaden 17"/>
          <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Haftpflicht Sachschaden" RisikoLfnr="2">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1800000.00" VSBez="Haftpflicht Sachschaden 17"/>
          <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Haftpflicht Vermögensschaden" RisikoLfnr="3">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="HLS" VSBetrag="80000.00" VSBez="Haftpflicht Vermögensschaden"/>
          <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/>
        </RISIKO>
      </SPARTE>
      <SPARTE PraemieBtoSp="56.00" PraemieNtoSp="15.00" SpartenCd="AKV" SpartenErweiterung="AK00000" Spartentxt="Vollkasko CHEVAL LIBERTE" VerbandSparteCd="073">
        <EL-Betrag BetragArtCd="K01" Bezeichnung="Listenpreis CHEVAL LIBERTE" Wert="12000.00"/>
        <EL-Einstufung EstArtCd="TVU" EstWert="00"/>
        <EL-Klausel Klauselnr="K53-F"/>
        <EL-Klausel Klauselnr="KC6-F"/>
        <EL-Klausel Klauselnr="KPP-F"/>
        <EL-Zeitraum ZRArtCd="9" ZRBeg="2014-02-01" ZREnd="2018-02-01"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Glasbruch" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Glasbruch"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Vandalismus" RisikoLfnr="2">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Vandalismus"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Marderbiss" RisikoLfnr="3">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Marderbiss"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Naturgewalten und Dachlawinen" RisikoLfnr="4">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Naturgewalten und Dachlawinen"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Parkschaden" RisikoLfnr="5">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Parkschaden"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Schmorschäden" RisikoLfnr="6">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Schmorschäden"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Brand" RisikoLfnr="7">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Brand"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Kollision mit Tieren" RisikoLfnr="8">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Kollision mit Tieren"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Unfall" RisikoLfnr="9">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Unfall"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Diebstahl" RisikoLfnr="10">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Diebstahl"/>
        </RISIKO>
      </SPARTE>  
    </VERTRAG>
    
    <!-- Haushalt -->
    <VERTRAG  AendGrundCd="AEP" AendGrundbez="DECKUNGSUMFANG" BIC="GIBAATWW" DurchfDat="2015-03-06" GueltigBeg="2015-04-01" Hptfaelligkeit="--04-01" IBAN="AT142099999999999999" Polizzennr="XX-U999.999" PraemieBtoVtg="180.00" PraemieNtoVtg="300.00" Vermnr="D88888" VertragsID="0261218745" VtgBeg="2000-04-01" VtgEnd="2018-04-01" VtgProdCd="PR" VtgProdukt="Haushalt Superschutz" VtgSparteCd="HH" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="2" ZahlWegCd="02">
      <EL-Klausel Klauselnr="02K-N"/>
      <EL-Klausel Klauselnr="201-N"/>
      <EL-Klausel Klauselnr="71X-N"/>
      <EL-Klausel Klauselnr="73A-N"/>
      <EL-Klausel Klauselnr="900-N"/>
      <EL-Klausel Klauselnr="R09-N"/>
      <EL-Text TxtArtCd="FRT" TxtInhalt="Haushalt Superschutz"/>
      <EL-Text TxtArtCd="FRT" TxtInhalt="Tarif 012005"/>
      <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/>
      <VERS_OBJEKT ObjLfnr="1" VersObjTxt="Mehrfamilienhaus">
        <VERS_SACHE AusstattungCd="Z" GebaeudeArtCd="ME" GebaeudeBez="Mehrfamilienhaus" Hausnr="1" LandesCd="AUT" NutzungCd="S" Ort="Wien" PLZ="1010" Strasse="Rathaus" VersSacheCd="02">
          <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="134.00 m²"/>
          <EL-Objektdaten ObjektdatenCd="99" ObjektdatenInfo="Neuwert" Wert="155976.00"/>
        </VERS_SACHE>
      </VERS_OBJEKT>
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="360.00" PraemieNtoSp="300.00" SichergKz="N" SondervereinbarungKz="N" SpartenCd="HH" SpartenErweiterung="K575000" Spartentxt="HAUSHALT" VerbandSparteCd="011">
        <EL-Klausel Klauselnr="10B-N"/>
        <EL-Klausel Klauselnr="981-N"/>
        <EL-Klausel Klauselnr="W22-N"/>
        <EL-Klausel Klauselnr="W28-N"/>
        <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="IndivRabatt" PraemKorrWert="26.83"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Glasbruch Luxus"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Haushalt-Versicherung"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="IndBlitzschlag privat"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Kinderwagen"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Neuwert für Tapeten"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Neuwertentschädigung"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Umweltstörung"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Vandalismus"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Aquarien, Wasserbett" RisikoLfnr="1">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3800.00" VSBez="Aquarien, Wasserbett"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Aufräum-,Reinigungskosten" RisikoLfnr="2">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Aufräum-,Reinigungskosten"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Berechnung mit indSumme" RisikoLfnr="3">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="155976.00" VSBez="Berechnung mit indSumme"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Hotelkosten" RisikoLfnr="4">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="7500.00" VSBez="Hotelkosten"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Ind Blitzschlag gewerb" RisikoLfnr="5">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3750.00" VSBez="Ind Blitzschlag gewerb"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Katastrophenschutz" RisikoLfnr="6">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="7500.00" VSBez="Katastrophenschutz"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Kühlbehälterinhalt" RisikoLfnr="7">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="350.00" VSBez="Kühlbehälterinhalt"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Privat-Haftpflicht" RisikoLfnr="8">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1000000.00" VSBez="Privat-Haftpflicht"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Transportmittelunfall" RisikoLfnr="9">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3500.00" VSBez="Transportmittelunfall"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Vorsorge" RisikoLfnr="10">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Vorsorge"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Zaun" RisikoLfnr="11">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="750.00" VSBez="Zaun"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="private Software" RisikoLfnr="12">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="2200.00" VSBez="private Software"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Ökoschutz" RisikoLfnr="13">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Ökoschutz"/>
        </RISIKO>
      </SPARTE>
    </VERTRAG>
    
    <!-- Landwirtschaft -->
    <VERTRAG  AendGrundCd="NEU" AendGrundbez="Neuzugang" BIC="GIBAATWW" DurchfDat="2017-01-01" GueltigBeg="2017-01-01" Hptfaelligkeit="--01-01" IBAN="AT142099999999999999" Polizzennr="XX-L999.999" PraemieBtoVtg="1500.00" PraemieNtoVtg="3000.00" Vermnr="D88888" VertragsID="0261218745" VtgBeg="2017-01-01" VtgEnd="2028-04-01" VtgProdCd="PR" VtgProdukt="Bauer Rundumschutz" VtgSparteCd="BLA" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="2" ZahlWegCd="02">
      <EL-Klausel Klauselnr="KUH-N"/>
      <EL-Klausel Klauselnr="SWN-N"/>
      <EL-Text TxtArtCd="FRT" TxtInhalt="Bauer Rundumschutz"/>
      <EL-Text TxtArtCd="FRT" TxtInhalt="Tarif 012017"/>
      <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/>
      <VERS_OBJEKT ObjLfnr="1" VersObjTxt="Feld im Anbaugebiet 1">
    	<VERS_SACHE VersSacheCd="16" VersLwCd="04" StatusCd="1"  VersSacheBez="Weizenfeld">
          <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="10 ha"/>
        </VERS_SACHE>
      </VERS_OBJEKT>
      <VERS_OBJEKT ObjLfnr="2" VersObjTxt="Mähdrescher">
    	<VERS_SACHE VersSacheCd="04" VersLwCd="05" VersSacheBez="Claas Lexion 750 TT"/>
      </VERS_OBJEKT>
      <VERS_OBJEKT ObjLfnr="3" VersObjTxt="Halle">
        <VERS_SACHE VersSacheCd="01" GebaeudeArtCd="LN" BauartCd="MA" GebaeudeBez="Maschinenhalle">
          <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="300.00 m²"/>
          <EL-Objektdaten ObjektdatenCd="99" ObjektdatenInfo="Neuwert" Wert="50000.00"/>
          <EL-Objektdaten ObjektdatenCd="22" ObjektdatenInfo="Mähdrescher" Wert="1"/>
        </VERS_SACHE>
      </VERS_OBJEKT>  
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="282.72" PraemieNtoSp="254.72" SichergKz="N" SondervereinbarungKz="N" SpartenCd="RS" SpartenErweiterung="6565000" Spartentxt="RECHTSSCHUTZ" VerbandSparteCd="079">
        <EL-Klausel Klauselnr="03R-N"/>
        <EL-Klausel Klauselnr="41R-N"/>
        <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderrabatt" PraemKorrWert="20.00"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Ohne Selbstbehalt"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="GRUNDDECKUNG 1 LW Fahrzeug"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="R01" RisikoBez="Rechtsschutzversicherung" RisikoLfnr="1">
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="62000.00" VSBez="Rechtsschutzversicherung"/>
        </RISIKO>
      </SPARTE>
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="54.36" PraemieNtoSp="47.28" SichergKz="N" SondervereinbarungKz="N" SpartenCd="FE" SpartenErweiterung="K901000" Spartentxt="FEUER LW" VerbandSparteCd="001">
        <EL-Klausel Klauselnr="16P-N"/>
        <EL-Klausel Klauselnr="31Z-N"/>
        <EL-Klausel Klauselnr="966-N"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Feuer-Plus"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Bauliche Verbesserungen" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="3"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="67666.50" VSBez="Bauliche Verbesserungen"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Grunddeckung f Gebäude" RisikoLfnr="2">
    	  <EL-Objekt ObjLfnr="3"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="40000.00" VSBez="Grunddeckung f. LW Gebäude"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Grunddeckung Anbaugebiet" RisikoLfnr="3">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="400000.00" VSBez="Grunddeckung Anbaugebiet"/>
        </RISIKO>
      </SPARTE>
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="100.72" PraemieNtoSp="80.72" SichergKz="N" SondervereinbarungKz="N" SpartenCd="BU" SpartenErweiterung="LW65000" Spartentxt="BETRIEBSUNTERBRECHUNG" VerbandSparteCd="032">
        <EL-Klausel Klauselnr="AAB-N"/>
        <EL-Klausel Klauselnr="BB1-N"/>
        <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderrabatt" PraemKorrWert="10.00"/>
        <EL-Text TxtArtCd="FRT" TxtInhalt="Ohne Selbstbehalt"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="R01" RisikoBez="BU Sicher ist sicher" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="2"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1000000.00" VSBez="BU Sicher ist sicher"/>
        </RISIKO>
      </SPARTE>
    </VERTRAG>
    
    <!-- Unfall -->
    <VERTRAG  AendGrundCd="999" AendGrundbez="Vertragsverlängerung" BIC="OPSKATWW" DurchfDat="2017-04-03" GueltigBeg="2017-04-03" Hptfaelligkeit="--09-01" IBAN="AT406099999999999999" Polizzennr="YY-U888.888" PraemieBtoVtg="40.00" PraemieNtoVtg="384.00" Vermnr="D99999" VertragsID="0574558448" VtgBeg="1994-07-01" VtgEnd="2015-09-01" VtgProdCd="UF" VtgProdukt="Unfall Superschutz" VtgSparteCd="UV" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="6" ZahlWegCd="02">
      <EL-Klausel Klauselnr="R09-N"/>
      <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/>
      <VERS_OBJEKT ObjLfnr="1">
        <VERS_PERSON Personennr="2918072343@11435234"/>
        <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Hochbautechniker"/>
      </VERS_OBJEKT>
      <VERS_OBJEKT ObjLfnr="2">
        <VERS_PERSON Personennr="2918072344@11435237"/>
        <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Apothekerin"/>
      </VERS_OBJEKT>
      <VERS_OBJEKT ObjLfnr="3">
        <VERS_PERSON Personennr="2918072345@11435242"/>
        <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Schüler"/>
      </VERS_OBJEKT>
      <VERS_OBJEKT ObjLfnr="4">
        <VERS_PERSON Personennr="2918072346@11435245"/>
        <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Kind"/>
      </VERS_OBJEKT>
      <SPARTE DirBeteiligtKz="N" PraemieBtoSp="400.00" PraemieNtoSp="384.00" SichergKz="N" SondervereinbarungKz="N" SpartenCd="UV" SpartenErweiterung="UV1000" Spartentxt="Unfallversicherung" VerbandSparteCd="051">
        <EL-Klausel Klauselnr="24B-N"/>
        <EL-Klausel Klauselnr="28B-N"/>
        <EL-Klausel Klauselnr="37B-N"/>
        <EL-Klausel Klauselnr="Z86-N"/>
        <EL-Klausel Klauselnr="Z87-N"/>
        <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="IndivRabatt" PraemKorrWert="20.01"/>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Unfallkosten" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="2317.00" VSBez="Unfallkosten"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Kosmetische Operation" RisikoLfnr="2">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15399.00" VSBez="Kosmetische Operation"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Spitalgeld" RisikoLfnr="3">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="47.10" VSBez="Spitalgeld"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Genesungsgeld" RisikoLfnr="4">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="47.10" VSBez="Genesungsgeld"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Dauernde Invalidität" RisikoLfnr="5">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="92371.00" VSBez="Dauernde Invalidität"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Unfalltod" RisikoLfnr="6">
    	  <EL-Objekt ObjLfnr="1"/>
    	  <EL-Objekt ObjLfnr="2"/>
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15399.00" VSBez="Unfalltod"/>
        </RISIKO>
        <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Kinderspitalgeld" RisikoLfnr="7">
    	  <EL-Objekt ObjLfnr="3"/>
    	  <EL-Objekt ObjLfnr="4"/>
          <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="450.00" VSBez="Kinderspitalgeld"/>
        </RISIKO>
      </SPARTE>
    </VERTRAG>
    
    <!-- Krankenversicherung -->
    <VERTRAG  AendGrundCd="TAA" AendGrundbez="Tarifanpassung" DurchfDat="2016-12-13" GueltigBeg="2017-01-01" Hptfaelligkeit="--03-01" Polizzennr="2032019351" PraemieBtoVtg="1265.97" PraemieNtoVtg="1292.59" Vermnr="D99999" VertragsID="2032019351K" VtgBeg="2012-03-01" VtgEnd="2999-12-31" VtgProdCd="KE" VtgProdukt="Krankenversicherung" VtgSparteCd="KV" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="1" ZahlWegCd="01">
      <EL-Polizzennummer PolArtCd="X" PolNr="KV-D000.01"/>
      <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/>
      <VERTRAGSPERSON Lfnr="2" Personennr="2918072343@11435234" VtgRolleCd="IA"/>
      <VERS_OBJEKT ObjLfnr="1">
        <VERS_PERSON Personennr="2918072343@11435234"/>
        <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Hochbautechniker"/>
      </VERS_OBJEKT>
      <SPARTE PraemieBtoSp="1265.97" PraemieNtoSp="1292.59" SpartenCd="KE" SpartenErweiterung="LL000000" Spartentxt="Ambulant" VerbandSparteCd="300">
        <EL-Klausel Klauselnr="53.DK0CA"/>
        <EL-Praemienkorrektur PraemKorrArtCd="UZ" PraemKorrWert="-39.15"/>
        <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-03-01" ZREnd="2998-03-22"/>
        <RISIKO PraemFristCd="J" PraemieNto="1292.59" RisikoArtCd="K02" RisikoBez="Ambulanz" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Zeitraum ZRArtCd="9" ZRBeg="2013-01-01" ZREnd="9999-12-31"/>
        </RISIKO>
      </SPARTE>
    </VERTRAG>
    
    <!-- Lebensversicherung -->
    <VERTRAG  AendGrundCd="STV" AendGrundbez="Totalstorno" BIC="BKAUATWW" DurchfDat="2015-09-30" GueltigBeg="2015-10-01" Hptfaelligkeit="--11-01" IBAN="AT369999999999999999" Polizzennr="2300356024" PraemieBtoVtg="40.00" PraemieNtoVtg="400.00" Vermnr="D99999" VertragsID="2300356024L" VtgBeg="2012-11-01" VtgEnd="2030-11-01" VtgProdCd="LE" VtgProdukt="Kindervorsorge" VtgSparteCd="LV" VtgStatusCd="9" WaehrungsCd="EUR" ZahlRhythmCd="6" ZahlWegCd="02">
      <EL-Bezugsberechtigung BBArtCd="ERL" BBTxt="Versicherungsnehmer"/>
      <EL-Bezugsberechtigung BBArtCd="ABL" BBTxt="Die gesetzlichen Erben"/>
      <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/>
      <VERTRAGSPERSON Lfnr="2" Personennr="2918072343@11435234" VtgRolleCd="IA"/>
      <VERS_OBJEKT ObjLfnr="1">
        <VERS_PERSON Personennr="2918072343@11435234"/>
      </VERS_OBJEKT>
      <SPARTE PraemieBtoSp="360.00" PraemieNtoSp="400.00" SpartenCd="LV" SpartenErweiterung="YQJ40000" Spartentxt="YoungStarGarant" VerbandSparteCd="200">
        <EL-Anzahl Bezeichnung="Versicherungsdauer" Wert="18.00"/>
        <EL-Klausel Klauselnr="700-L"/>
        <EL-Klausel Klauselnr="701-L"/>
        <EL-Praemienkorrektur PraemKorrArtCd="UZ" PraemKorrWert="13.32"/>
        <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-11-01" ZREnd="2015-10-01"/>
        <RISIKO PraemFristCd="J" PraemieNto="400.00" RisikoArtCd="L03" RisikoBez="Erlebensversicherung mit Prämienrückgewähr" RisikoLfnr="1">
    	  <EL-Objekt ObjLfnr="1"/>
          <EL-Versicherungssumme VSArtCd="ELS" VSBetrag="6000.00" VSBez="Erlebensfallsumme"/>
          <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-11-01" ZREnd="2030-11-01"/>
        </RISIKO>
      </SPARTE>
    </VERTRAG>
    
    <!-- Schaden -->
    <SCHADEN  BearbStandCd="E" Ereigniszpkt="2015-05-07T00:00:00.000" ErledDat="2015-05-07" MalusWirksamKz="J" Meldedat="2015-05-07" Polizzennr="XX-I000.123" SachbearbVU="Sachbearbeiter Michael" SchadUrsCd="601" SchadUrsTxt="Kollision mit bekanntem Fzg." Schadennr="2803235778" SpartenCd="AKV" SpartenErweiterung="AK00000" Vermnr="M99999" VerschuldenCd="U" WaehrungsCd="EUR">
      <SCHADEN_BETEILIGTER BetLfnr="1" BetRolleCd="AS" BetTxt="Vornam Famnam"/>
      <SCHADEN_BETEILIGTER BetLfnr="2" BetRolleCd="ZE" BetTxt="ZENTRALE der Gutachter">
        <ZAHLUNG WaehrungsCd="EUR" ZahlBetrag="103.50" ZahlDat="2015-07-09" ZahlGrundCd="99" ZahlWegCd="99" ZahlungsLfnr="1"/>
      </SCHADEN_BETEILIGTER>
      <SCHADEN_BETEILIGTER BetLfnr="3" BetRolleCd="ZE" BetTxt="Werkstatt KFZ GmbH">
        <ZAHLUNG BIC="R8945122140" IBAN="AT145221455645444444" WaehrungsCd="EUR" ZahlBetrag="575.15" ZahlDat="2015-06-08" ZahlGrundCd="99" ZahlWegCd="12" ZahlungsLfnr="1"/>
      </SCHADEN_BETEILIGTER>
    </SCHADEN>
    
    </PAKET>
    </OMDS>
    

    Falls mir wer einen Hinweis oder Tipp geben könnte - Danke



  • Wer foult da? Das gibt mindestens eine gelbe Karte. 😀
    Du meinst wohl "fault".

    Mit

    buftext[size+1] = '\0';
    

    greifst du auf nicht-reservierten Speicher zu. Du benötigst wohl eher

    int len = fread(buftext,size,1,file);
    buftext[len] = '\0';
    

    Und gleiches bei

    if (ibuf == size+1)
        break;
    

    Sollte

    if (ibuf == size) // bzw. besser >= (oder sogar >= len)
        break;
    

    sein.

    PS: malloc(size+1 * sizeof(char)) kannst du zu malloc(size+1)verkürzen (da sizeof(char) immer 1 ist).



  • @Th69

    Danke für die Infos werd ich korrigieren.
    Beim debuggen schlägt er aber in Zeile 65 an:

    while (buftext[ibuf] != ' ')
    


  • @WienMax sagte in Segmentation foult nur beim Debuggen ???:

    Beim debuggen schlägt er aber in Zeile 65 an:
    while (buftext[ibuf] != ' ')

    Welchen Wert hat denn ibuf an der Stelle?
    Und ist der kleiner als size?



  • @DirkB ibuf 24655 size 24749



  • Was mir gerade noch aufgefallen ist:

    // Zeile 45 bei dir
    if (buftext[ibuf] != '>' || (buftext[ibuf] != '/' && buftext[ibuf+1] != '>'))  // > oder />
    

    Hast du dort || und && vertauscht?

    Bist du generell mal mit dem Debugger im Einzelschritt durch den Code gegangen, um zu sehen, ob die XML-Tags richtig durchlaufen werden?

    PS: Ist das eine Hausaufgabe? Weil sonst wäre es wohl besser, du würdest eine XML-Parser Library benutzen, z.B. Expat XML parser.



  • @DirkB sagte in Segmentation foult nur beim Debuggen ???:

    @WienMax sagte in Segmentation foult nur beim Debuggen ???:

    Beim debuggen schlägt er aber in Zeile 65 an:
    while (buftext[ibuf] != ' ')

    Welchen Wert hat denn ibuf an der Stelle?
    Und ist der kleiner als size?

    Das wäre komisch. Bist du ganz sicher?



  • @hustbaer oben ist ein link zum Screenshot.



  • OK. Also entweder stimmen die Werte die VS Code da anzeigt nicht, oder du hast dir den Stack zerschossen. Ich meine, guck mal was da für text und buftext angezeigt wird.



  • @Th69 sagte in Segmentation foult nur beim Debuggen ???:

    PS: malloc(size+1 * sizeof(char)) kannst du zu malloc(size+1)verkürzen (da sizeof(char) immer 1 ist).

    Wenn das für einen Typ gemacht wird, bei dem sizeof() > 1 ergibt, kommt auch Müll raus, da Punkt vor Strichrechnung gilt.



  • @WienMax sagte in Segmentation foult nur beim Debuggen ???:

    FILE *file;
    ...
        printf("Konnte Datei %s nicht öffnen", file);  // Gehört noch ausgebessert da file bei Fehler null ist!
    

    Der Formatspecifier %s ist nicht für eine FILE-Struktur da.

    Schalte den Warnlevel vom Compiler auf Maximum und beseitige dann alle Warnungen. Ein cast ist dabei nicht das Mittel der Wahl.

    @WienMax sagte in Segmentation foult nur beim Debuggen ???:

     while (buftext[ibuf] != '>')
          nodenameende[i++] = buftext[ibuf++];  // Nodename Ende
    

    Bei solchen Aktionen sollte das i auch mal überprüft werden, damit es nicht zu groß wird- und wenn es zu groß wird muss es auch behandelt werden.



  • @Th69 sagte in Segmentation foult nur beim Debuggen ???:

    int len = fread(buftext,size,1,file);

    Damit habe ich dann in len den Wert 0 was aber nicht gewollt ist.
    fread returns the number of full items actually read, which may be less than count



  • OK, sollte dann

    int len = fread(buftext,1,size,file); // size und 1 vertauscht
    buftext[len] = '\0';
    

    sein.

    PS: Statt der 1 könnte man auch sizeof(char) schreiben. 😉



  • @Th69 sagte in Segmentation foult nur beim Debuggen ???:

    OK, sollte dann

    int len = fread(buftext,1,size,file); // size und 1 vertauscht
    buftext[len] = '\0';
    

    sein.

    PS: Statt der 1 könnte man auch sizeof(char) schreiben. 😉

    Danke jetzt läuft das Programm so wie es soll und nicht über das Ende hinaus.
    Tatsächlich ist ein Unterschied bei size: 24794 und len: 24417



  • Dies wird an den Zeilenumbrüchen liegen. Im Textmodus (unter Windows) wird \r\n als \n gelesen (und damit ist len < size).
    Wenn du die Originalzeilenumbrüche erhalten willst, dann lese binär: "rb" (hier aber nicht zu empfehlen)



  • @Th69 ja liegt eindeutig an den Zeilenumbrüchen.


Anmelden zum Antworten