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;
}
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 278776
Url: https://administrator.de/contentid/278776
Printed on: April 19, 2024 at 05:04 o'clock
5 Comments
Latest comment
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