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

Reply via email to