PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql_real_escape_string in C



OliverH
07-04-2007, 11:49
Hallöchen, ich baue mir derzeit einen eigenen DynDNS dienst :)

Der Server funktioniert soweit auch, leider habe ich aber das Problem, dass das escapen nicht richtig funktioniert.



write(connfd, ASKUSER, sizeof(ASKUSER));
read(connfd, user, sizeof(user));
rem_endl(user);

write(connfd, ASKPW, sizeof(ASKPW));
read(connfd, password, sizeof(password));
rem_endl(password);

write(connfd, ASKDOM, sizeof(ASKDOM));
read(connfd, domain, sizeof(domain));
rem_endl(domain);

printf("USER: %s\nPASS: %s\nDOMAIN %s\n", user, password, domain);

memset(temp, 0x00, sizeof(temp));
mysql_real_escape_string(my, temp, password, sizeof(temp));
memset(password, 0x00, sizeof(password));
strncpy(password, temp, sizeof(password));

memset(temp, 0x00, sizeof(temp));
mysql_real_escape_string(my, temp, user, sizeof(temp));
memset(user, 0x00, sizeof(user));
strncpy(user, temp, sizeof(user));

memset(temp, 0x00, sizeof(temp));
mysql_real_escape_string(my, temp, domain, sizeof(temp));
memset(domain, 0x00, sizeof(domain));
strncpy(domain, temp, sizeof(domain));

printf("USER: %s\nPASS: %s\nDOMAIN %s\n", user, password, domain);

split_domain(host, domain);
printf("Host: %s\n", host);
printf("Domain: %s\n", domain);

Der Output sieht dann wie folgt aus:


oliver@fuckup:~/workspace/DynDNS-Server$ ./a.out
Erfolgreich mit dem MySQL-Server verbunden
Neue verbindung geoeffnet von 192.168.93.15
USER: ABCDEFG

PASS: 08051945

DOMAIN dyndns.fuck.fu

USER: ABCDEFG\r\n\0\0\
PASS: 08051945\r\n\0\0\0\0\0\0\0\0\0\0ABCDEFG\r\n\0\0\
DOMAIN \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0 \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\008051945\r\n\0\0\0\0\0\0\0\0\0\0ABCDEFG\r\n\0 \0\
Host: \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\0\0\0\0 \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0 \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\008051945\r\n\0\0\0\0\0\0\0\0\0\0ABCDEFG\r\n\0 \0\
Domain: \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0 \\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\ 0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\ \0\\008051945\r\n\0\0\0\0\0\0\0\0\0\0ABCDEFG\r\n\0 \0\

Die Funktion rem_endl entfernt die Zeilenumbrüche aus den jeweiligen Strings.
Wenn ich die Strings nicht escape klappt alles wunderbar, nur so habe ich leider diese tausenden \0 da drin. Wie bekomme ich das weg?
MfG. Oli