- From: James Hansen <j3.hansen@student.qut.edu.au>
- Date: Tue, 21 Sep 1999 00:17:22 +0000
- To: "www-lib@w3.org" <www-lib@w3.org>
- Message-ID: <37E6CE92.ADCCFBB0@student.qut.edu.au>
If the list is the appropriate place for bug fixes, then I have a simple one for HTParse.c . HTSimplify incorrect simplifies file url of the form file:/path1/../path2/file. The resulting url is file:/ppath2/file . Attached is a patch and a small fragment of code that invokes the problem. James Henrik Frystyk Nielsen wrote: > Hi Takuya. > > If you send a patch to the <www-lib@w3.org> mailing list then I am sure > that it can make it into the code base. > > Thanks, > > Henrik Frystyk Nielsen, > mailto:frystyk@microsoft.com > ----- Original Message ----- > From: "T.Nakashima" <asuka01@mbox.kyoto-inet.or.jp> > To: <frystyk@microsoft.com> > Sent: Monday, September 20, 1999 04:06 > Subject: libwww bug report > > > Dear Henrik Frystyk Nielsen. > > > > Please forgive my boldness in writing to you for the first time. > > > > It is reported because a bug was discovered in Libwww. > > > > When HTProfile_newPreemptiveClient is used with Windows > > without a WWW_WIN_ASYNC option, HTEventInit is not called. > > Therefore WSAStartup is not called and an error happens when > > it tries to connect it. > > > > I hope this mail becomes the reference of the future development. > > > > > > Best regards, > > > > Takuya Nakashima( I can understand English little.) > > asuka01@mbox.kyoto-inet.or.jp > >
#include <iostream> #include "WWWCore.h" #include "HTParse.h" int main(){ char buff[255] = "file:/path1/../path2/path3/../file"; char *buffPtr = buff; cerr << buff <<endl; buffPtr = HTSimplify( &buffPtr ); cerr << buffPtr << endl; return(0); }
--- /home/james/libwww/Library/src/HTParse.c Tue Feb 23 12:30:09 1999 +++ ./Library/src/HTParse.c Mon Aug 23 08:39:20 1999 @@ -405,7 +405,9 @@ char *q = p; while (q>path && *--q!='/'); /* prev slash */ if (strncmp(q, "/../", 4)) { - char *orig = q+1; + /*orginal char *orig = q+1; */ + /*appears to be a bug changed 17/8/1999 */ + char *orig = (*(q)=='/') ? q+1 : q; char *dest = (*(p+3)!='/') ? p+3 : p+4; while ((*orig++ = *dest++)); /* Remove /xxx/.. */ end = orig-1;
Received on Monday, 20 September 1999 20:14:34 UTC