----- Original Message -----
From: Joe Lewis <[email protected]>
To: [email protected]
At: 12/11 12:32:07
SAILESH KRISHNAMURTI, BLOOMBERG/ 731 LEXIN wrote:
> I doubt about strace for Solaris ;-) truss' me.
Forgot about truss! Thanks for the reminder, Ralf!
>
Hi, Forgive me if my post
dosent come out looking right, the mail client Im using is a bit antiquated.
However to answer the above questions, here is a code snippet that illustrates
how this is being set in the code: char loc[2024];
sprintf (loc, "%s",
location);//location is passed into the method apr_table_setn
(r->headers_out, "Location", loc);
> r->status = HTTP_TEMPORARY_REDIRECT;
> return (HTTP_TEMPORARY_REDIRECT);
The above is pretty standard. I also printed out the r->headers_out using
apr_table_getn and fprintf statements and it looks ok. the garbage characters
are the same for a given compilation attempt and apache instance but varies
between compilation attempts :-)
>
SAILESH : Adjust your sprintf to an snprintf line, and for the length,
use strlen(location); For example :
sprintf (loc, "%s", location);//location is passed into the method
becomes :
sprintf (loc, strlen(location) "%s", location);//location is passed into
the method
char *loc;
loc = (char*)apr_palloc(r->pool,strlen(location));
strncpy(loc,location,strlen(location));
apr_table_setn (r->headers_out, "Location", loc);
r->status = HTTP_TEMPORARY_REDIRECT;
return (HTTP_TEMPORARY_REDIRECT);
And let us know if that behaves any differently. (I believe that the
apr_table_setn actually sets the pointer, not copying the string, which
means the loc variable could be disappearing after leaving the function
and causing strange behavior.)
Joe
jOE- just one question, do you want me to put in the strncpy as well as
snprintf. i.e as below :
sprintf (loc, strlen(location), "%s", location);//note the comma before"%s"
strncpy(loc,location,strlen(location));
please confirm
--
Joseph Lewis <http://sharktooth.org/>
"Divide the fire, and you will sooner put it out." - Publius Syrus