kunert0345
Goto Top

Absturz bei "strcat"

Seit dem ich die Codezeile "strcat( string1, tmp1);" in meinem Queltext habe stürzt das Programm immer ab.
Hat einer eine Idee warum das so ist?
Bin schon langsam am verzweifeln face-confused

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void) {

    FILE *fp;
    char tmp1;
    char switch1 = '0';  
    char string1[255];

    fp = fopen ("config.conf", "r");  

    if(fp == NULL) {
        puts("ERROR: Konfiguration konnte nicht eingelesen werden, ueberpruefen Sie die config.conf Datei");  
        return 1;
    }
    else {
        //List Buchstabenweise die config datei
        while((tmp1 = fgetc(fp)) !=EOF) {
            //Die Leerzeichen löschung wird mit " an oder abgeschaltet 
            if('"' == tmp1) {  
                if(switch1 == '0'){  
                    switch1 = '1';  
                }
                else {
                    switch1 = '0';  
                }
            }
            //Leerzeichen löschung auser wenn " switch1 an ist und " zeichen löschen 
            if (!((tmp1==' ' || tmp1=='\t') && (switch1=='0') || (tmp1=='"'))){  
                printf("%c", tmp1);  

                //variablen name einlesen

                strcat( string1, tmp1);
            }
        }
        printf("\n%s", string1);  

        fclose (fp);
        return 0;
    }
}

Content-Key: 278776

Url: https://administrator.de/contentid/278776

Printed on: April 19, 2024 at 05:04 o'clock

Member: Lochkartenstanzer
Solution Lochkartenstanzer Jul 30, 2015 updated at 14:10:53 (UTC)
Goto Top
Moin

strcat erwartet pointer auf Null-terminierte Strings. Dein tmp1 ist aber nur ein char..

das sind so die typischen fehler, um erfolgreich exploits anzubringen. face-smile

Also öfter mal in des Reference-manual schauen.

lks
Member: kunert0345
kunert0345 Jul 30, 2015 at 14:12:37 (UTC)
Goto Top
Ah verstehe, da kann er ja lange warten *~*

Hast Du eine Idee wie ich den char in den string schreiben kann?
Member: Lochkartenstanzer
Solution Lochkartenstanzer Jul 30, 2015 updated at 14:19:58 (UTC)
Goto Top
Nachtrag:;

Bei stract solltest Du sicherstellen, daß dein Ziel-Array genug platz hat. Also vorher die strinlänge im Ziel und an der quelle überprüfen udn sofern dies mehr als die reservierte Arraylänge beträgt vom aufruf von strcat absehen!

lks
Member: Lochkartenstanzer
Solution Lochkartenstanzer Jul 30, 2015 updated at 14:19:57 (UTC)
Goto Top
Zitat von @kunert0345:

Ah verstehe, da kann er ja lange warten *~*

Hast Du eine Idee wie ich den char in den string schreiben kann?

Länge des Strings in string1 feststellen, string1[länge] dann auf den char setzen und dann noch eine null in länge+1 schreiben. Alelrdings soltlest Du sicherstellen, daß Du nicht üebr die Array-grenzen hinausschreibst.

lks
Member: kunert0345
kunert0345 Jul 30, 2015 at 14:19:47 (UTC)
Goto Top
DANKE!!! face-smile)