Hello!
On Thu, 11 Aug 2011 14:54:40 +0200, var...@mithrandir.hu (Varadi Gabor)
wrote:
Elkészült.
A csatolásban van tömörítve.
Volt egy hiba, amit menetközben javitottam:
----------------------------
block.c (Sqlite3-as résznél)
A stmt SMALLBUF míg a snpintf MAXBUF!
void is_sender_on_minefield(struct session_data *sdata, char *ip,
struct __config *cfg){
char stmt[SMALLBUFSIZE];
sqlite3_stmt *pStmt;
const char **pzTail=NULL;
snprintf(stmt, MAXBUFSIZE-1, "SELECT ts FROM %s WHERE ip='%s'",
SQL_MINEFIELD_TABLE, ip);
----------------------------
A spamdop is átlalkitásra került, a SPAMDROPHELPER kikerült belőle.
Helyette megcsinálja a saját könytárait, mert van joga :)
Elkeszultem a sizeof()-ra atirassal, ill. a tobbi javitassal. Aztan
amikor kiprobaltam, meglepodve tapasztaltam, hogy furcsa, buffermeretre
visszavezetheto libak leptek fel a demonban.
Jobban megnezve az derult ki, hogy bizonyos helyeken a sizeof(pointer)
nem a pointer altal hivatkozott karaktertomb meretet adta vissza, hanem
csak a pointer meretet (kb. 4 byte).
Pl. az src/smtp.c-ben az alabbi diff hatasara a buf valtozoba csak 4
byte-ot
hajlando irni, ami nem eleg.
@@ -162,13 +162,13 @@
if(verbosity >= _LOG_DEBUG) syslog(LOG_PRIORITY, "%s: sent in
injecting: %s", ttmpfile, cmd);
READ:
- recvtimeout(sd, buf, MAXBUFSIZE, TIMEOUT);
+ recvtimeout(sd, buf, sizeof(buf), TIMEOUT);
if(verbosity >= _LOG_DEBUG) syslog(LOG_PRIORITY, "%s: got in
injecting: %s", ttmpfile, buf);
Nem akartam kockaztatni, hogy egy eldugott .c file-ban esetleg a
figyelmem
elkerulese miatt egy 'sizeof' problema bennmaradjon, ezert
visszacsinaltam
minden olyan modositast, ami a sizeof() atirassal kapcsolatos, es
egyelore
jegeltem ezt a projektet.
Suto Janos