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
Hat einer eine Idee warum das so ist?
Bin schon langsam am verzweifeln
#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;
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278776
Url: https://administrator.de/contentid/278776
Ausgedruckt am: 24.11.2024 um 23:11 Uhr
5 Kommentare
Neuester Kommentar
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.
Also öfter mal in des Reference-manual schauen.
lks
strcat erwartet pointer auf Null-terminierte Strings. Dein tmp1 ist aber nur ein char..
das sind so die typischen fehler, um erfolgreich exploits anzubringen.
Also öfter mal in des Reference-manual schauen.
lks
Zitat von @kunert0345:
Ah verstehe, da kann er ja lange warten *~*
Hast Du eine Idee wie ich den char in den string schreiben kann?
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