- From: Markku Savela <msa@msa.tte.vtt.fi>
- Date: Tue, 12 Nov 1996 13:38:55 +0200 (EET)
- To: www-lib-bugs@w3.org
- cc: msa@msa.tte.vtt.fi
Hi,
I'm not yet familiar with the library internals, so I have to ask
second opinion here. I hope someone could verify whether these are
real potential problems or just my misunderstanding about the library
functions...
1. Suspicious use of HTTee in HTMIME.c
--------------------------------------
The following code fragment appears in the pumpData function
} else if (HTResponse_isCachable(me->response)) {
HTStream * cache = HTStreamStack(WWW_CACHE, me->target_format,
me->target, request, NO);
if (cache) me->target = HTTee(me->target, cache, NULL);
}
What seems to happen, is that me->target stream will appear on *both*
Tee streams, and when the Tee is destroyed, this stream will get *TWO*
calls for its _free method! The first works, but the second will
totally mess things up (as the stream structure does not exist
anymore)...
Any suggestions how to fix this?
2. HTRequest_dup appears very dangerous in HTReqMan.c
-----------------------------------------------------
I cannot see how a total crash can be avoided, if any call to
HTRequest_dup or HTRequest_dupInternal is made, because
- both make a blind of copy of the HTRequest structure (copying *ALL*
miscellaneous pointers to other structures as is),
- HTRequest_dupInternal calls HTRequest_clear, which calls
HTResponce_delete, if response pointer existed. However, nothing
removes the original response pointer in the original HTRequest,
which now points to freed structure...
- in both cases a lot of other pointers are duplicated, and it seems
that a great havoc will occur when the original and duplicate are
ultimately released by a call to HTRequest_delete!!!!
To me it looks like HTRequest_dup* should, either
- NULL all pointers
or
- make duplicates of the referenced structures
or
- if referenced structs support reference counting, it should be
applied
or
- combination of above
--
Markku Savela (msa@hemuli.tte.vtt.fi), Technical Research Centre of Finland
Multimedia Systems, P.O.Box 1203,FIN-02044 VTT,http://www.vtt.fi/tte/staff/msa/
Received on Tuesday, 12 November 1996 06:38:59 UTC