Memory overleak kdesi mezi httpd, php3 a mod_czech...

Ondrej X Dolezal trifid na redigy.cz
Čtvrtek Červen 3 11:35:59 CEST 1999


>      Kernel 2.2.9, Apache/1.2.6 mod_czech/3.0.2, php3 3.0.3.
> Obcas kdyz postuju formular, tak se mi dostanou do dat uplne
> nahodna data uplne odjinad.  Obcas jsou to dva tri znaky na
> konci, obcas je to takovadle hruza (viz. nize).  Nevi nekdo, cim
> by to tak mohlo byt?  Pripadne jestli pomuze upgrade na novejsi
> verze?
> Ondra Sury.

Totez jsme meli u nas - pravda na 2.2.4/1.3.6/3.1.0b4/3.0.7,
problem je v PHP3 ktere si cte delku vstupu pred prekodovanim.
Pan Plechsmid mi poslal patch na PHP3, s nimz vse funguje ok.

-- mcz-patch-php3.0.7 --
--- functions/post.c.001	Mon Jan 04 14:25:21 1999
+++ functions/post.c	Sun May 30 21:56:55 1999
@@ -91,7 +91,12 @@
 	}
 	length = GLOBAL(request_info).content_length;
 	cnt = length;
-	buf = (char *) emalloc((length + 1) * sizeof(char));
+/* MOD_CZECH - begin */
+  /* Pro jistotu jsme zvetsili 2x. Aby to s jistotou fungovalo i pro
unicode,
+   * museli bychom buf zvetsit 6x! Hmm...extremni pripady budeme
ignorovat.
+   */
+	buf = (char *) emalloc((length + 1) * sizeof(char) * 2);
+/* MOD_CZECH - end */
 	if (!buf) {
 		php3_error(E_WARNING, "Unable to allocate memory in php3_getpost()");
 		return NULL;
@@ -118,6 +123,9 @@
 		}
 		signal(SIGPIPE, handler);	/* restore normal sigpipe handling */
 		kill_timeout(GLOBAL(php3_rqst));	/* stop timeout timer */
+/* MOD_CZECH - begin */
+		cnt = dbpos;
+/* MOD_CZECH - end */
 	}
 #else
 	cnt = 0;
--

- Ondrej.Dolezal na Redigy.Cz --------------------------------------------
  (+420) 603 499 675                       REDIGY Nesverova 1 Olomouc  
------------------------------------------------ http://www.Redigy.Cz -


Další informace o konferenci Linux