Hi Jeff,

Thanks for your feedback.

On Thu, 8 Feb 2001, Jeffrey W. Baker wrote:

> On Thu, 8 Feb 2001, Nick Tonkin wrote:
> 
> >
> > Hi all,
> >
> > No response on this so here it is again, any clues appreciated:
> >
> > I am encountering a weird problem with Apache::URI ... consider, please,
> > this test handler:
> >
> >[ ... ]
> >
> > This code has worked fine for two years or more on my FreeBSD boxes; this
> > is on Linux RedHat 7 ... dunno if that makes a difference.
> 
> It doesn't make a difference.  Segfaults for me on Slackware-current, too.
> However, I would suggest avoinding RH 7.0 and its buggy compiler!

Jeez, I have had nothin but headaches with RedHat. I have always used
FreeBSD but it didn't know about the SCSI disks on the customer's HP
NetServer ... maybe I'll try again with Suse or Slackware before I get too
far along.


> 
> I've debugged the problem, but have no solution:

Thanks for getting in where my hands fear to get dirty ... :)

> 
>      my $uri = Apache::URI->parse($r, $r->uri);
> 
> This calls ap_parse_uri_components(), which is responsible for setting
> the scheme, hostname, user, password, port, path, etc.  But, the scheme is
> not getting set, because the request line only contains "/path" or such.
> 
>      $uri->hostname($r->get_server_name);
>      $uri->port($r->get_server_port);
> 
> These work fine.
> 
>      print $uri->unparse;
> 
> This calls ap_unparse_uri_components().  If there is a hostname but no
> scheme, ap_unparse_uri_components() will pass a null argument to
> strcasecmp, which will cause an invalid memory access and SIGSEGV.  You
> can work around the problem by including $uri->scheme('http'); with the
> other accessor methods.  In the long run this is probably a bug in Apache.
> 
> If you read src/main/util_uri.c in Apache, you can see why commenting out
> one accessor avoids the crash.
> 
> Regards,
> Jeffrey Baker

I wonder if you noticed that this code was from the Auth/Access stuff
you did for me a while back ... so I'll patch mine but you might want to
take a look at the places you are using it ...

Thanks again,

Nick

Reply via email to