Re: Segfault in 4.2.3RC2

From: Date: Thu, 05 Sep 2002 02:45:10 +0000
Subject: Re: Segfault in 4.2.3RC2
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-87938@lists.php.net to get a copy of this message
The problem described here occurs both in 4.2.3RC2 & 4.3.0-dev. The attached patch is against 4.3.0-dev (HEAD) and as far as my testing shows addresses the problem. The source of the segfault is a buffer overflow that results when estimated number of times the separator will be inserted is less the then actual number. There is no 'true' way of checking the number of separators to be inserted, since this number will often depend on the data contained in the string itself. So, the solution is to add a check that will reallocate more memory if the initial estimate on the string size proves to be incorrect. Unless, there are better solutions as alternatives to the patch or any strong objections I'll commit this patch to both 4.2.3RC2 & 4.3.0-dev in the morning. Ilia P.S. The segv can be replicated by the attached php script (segfault-4.2.3RC2.txt) submitted by Martin Jansen.

Attachment: [text/x-diff] string.c.patch
<?php $var = 'Unser Waldhof liegt inmitten der ursprünglichen Landschaft des Dreiländerecks Deutschland – Luxemburg –Belgien. Umgeben von Wäldern, Wiesen und Feldern sind unsere Ferienwohnungen ein idealer Ausgangspunkt für ausgedehnte Streifzüge durch eine intakte Natur. Wanderer und Naturfreunde können bei uns die wohltuende Ruhe einer ländlichen Region genießen. Kinder fühlen sich auf unserem Bauerhof besonders wohl, denn hier können sie den artgerechten Umgang mit unseren Kühen und Kälbern, den Hühnern und Katzen, unseren beiden Ponys Max & Moritz sowie unserem Hofhund Sanny hautnah kennen lernen. Aber auch die angebotenen Traktorfahrten erfreuen sich bei unseren kleinen Gästen größter Beliebtheit. Unsere beiden Wohnungen sind modern und ansprechend eingerichtet und verfügen über eine voll ausgestattete Einbauküche, Telefon, Radio sowie einen Fernseher mit Sat-Anschluß. Der "Kornspeicher" bietet auf 80qm Platz für bis zu 8 Personen. Die Ferienwohnung besteht aus 2 Schlafzimmern, Küche, Wohnraum mit Schlafcouch, Essecke sowie einem Bad mit Dusche und WC. Der "Heuboden" bietet auf 50 qm Platz für 4 Personen. Die Ferienwohnung besteht aus einem Schlafzimmer, Wohnküche mit Schrankbett sowie einem Bad mit Dusche und WC. Eine Terrasse mit bequemen Liegestühlen sowie ein Hobbyraum mit Spielen, Büchern und einer Tischtennisplatte sowie einem Fußballkicker stehen unseren Gästen ebenfalls zur Verfügung. Für unsere kleinen Gäste stehen eine Schaukel, ein Sandkasten und ein Baumhaus bereit. Wir würden uns freuen, Ihnen und Ihren Kindern ein erholsames Naturerlebnis ermöglichen zu können. '; echo strlen($var)."\n"; printf("%f\n",(strlen($var)/43)); //$wrapped = wordwrap($var,43,"\n | "); for( $i=50; $i<200; $i++ ) { echo $i."\n"; flush(); wordwrap($var, 43, str_repeat(" ", $i)); } //wordwrap($var, 43, str_repeat(" ", 80)); //$wrapped = wordwrap($var,43,"\n "); ?>
« previous php.dev (#87938) next »