PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > nzn.fr.delphi > delphi: autre super bug dans le code source !!
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
delphi: autre super bug dans le code source !!

Réponse
 
LinkBack Outils de la discussion
Vieux 13/01/2008, 13h33   #1
loki
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut delphi: autre super bug dans le code source !!

La par contre c un SUPER bug (grosso modo ca fait tourner le CPU de votre serveur a 100% dans une boucle infinie) :

toujour dans l'object TwebRequest, cette fois ci avec la classe TMultipartContentParser (quand on recoit un formulaire en multipart/form-data):

procedure TMultipartContentParser.BufferContent;
var
L, R: Integer;
P: PChar;
begin
if (WebRequest.ContentLength > 0) and (FContentBuffer = '') then
begin
FContentBuffer := WebRequest.Content;
if Length(WebRequest.Content) < WebRequest.ContentLength then
begin
L := Length(FContentBuffer);
SetLength(FContentBuffer, WebRequest.ContentLength);
P := PChar(FContentBuffer) + L;
while L < WebRequest.ContentLength do
begin
R := WebRequest.ReadClient(P^, WebRequest.ContentLength - L);
if R = 0 then break;
Inc(L, R);
Inc(P, R);
end;
end;
end;
end;


L'instruction :

while L < WebRequest.ContentLength do
begin
R := WebRequest.ReadClient(P^, WebRequest.ContentLength - L);
if R = 0 then break;
Inc(L, R);
Inc(P, R);
end;

C'EST DU N'IMPORTENAWAK AUSSI !! mais la c'est d'un gros !! comment ce truc n'a t'il jamais été corrigé ??

je vous donne un indice :

function TISAPIRequest.ReadClient(var Buffer; Count: Integer): Integer;
begin
Result := Count;
if not ECB.ReadClient(ECB.ConnID, @Buffer, DWORD(Result)) then
Result := -1;
end;

vous l'avez compris le fonction ReadClient retourne -1 et pas 0 si elle n'a pas reussir à lire de données !!!!!!!!!!

du coup

while L < WebRequest.ContentLength do
begin
R := WebRequest.ReadClient(P^, WebRequest.ContentLength - L);
if R = 0 then break;
Inc(L, R);
Inc(P, R);
end;

bien ca donne une boucle infinie car jamais la condition (if R = 0 then break ne sera levé ...... donc si par malheur le client envoie une requete avec un gros fichier et coupe la connection avant la fin !!! bien ca donne un serveur web planté


purée, pourtant la franchement c'est GROS !! meme un debutant pourrait voire le probleme !

a++
stéphane

  Réponse avec citation
Vieux 13/01/2008, 14h21   #2
Flo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: delphi: autre super bug dans le code source !!

quelle version de Delphi utilises-tu?

rapporter des bugs ici ne sert à rien, si tu veux qu'ils soient
corriger, il faut les ajouter dans QualityCentral:
http://qc.codegear.com/

il y a un client windows disponible qui te permettra d'ajouter un
nouveau rapport de bug, afin de permettre une analyse rapide du
problème, il est préférable d'exprimer clairement le soucis, d'expliquer
les différentes étapes pour le reproduire et si possible de joindre au
rapport une application démonstrative.
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 06h51.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,07484 seconds with 10 queries