summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Wang <gwang@php.net>2015-02-25 10:48:19 -0500
committerGeorge Wang <gwang@php.net>2015-02-25 10:48:19 -0500
commit8584cc010aaf5dfa9e314d3e8f2eb14aee78225b (patch)
treeb693c30c81cccc9d7952fa9a039c67a345323692
parentc17a17e44b47662cb304bb5497fb7c8b86381548 (diff)
downloadphp-git-8584cc010aaf5dfa9e314d3e8f2eb14aee78225b.tar.gz
Fixed a bug that header value is not terminated by '\0' when accessed through getenv().
-rw-r--r--sapi/litespeed/lsapilib.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c
index 3d1513ac50..baf0db3797 100644
--- a/sapi/litespeed/lsapilib.c
+++ b/sapi/litespeed/lsapilib.c
@@ -1390,10 +1390,12 @@ char * LSAPI_GetHeader_r( LSAPI_Request * pReq, int headerIndex )
off = pReq->m_pHeaderIndex->m_headerOff[ headerIndex ];
if ( !off )
return NULL;
- if ( *(pReq->m_pHttpHeader + off +
- pReq->m_pHeaderIndex->m_headerLen[ headerIndex ]) )
- *( pReq->m_pHttpHeader + off +
- pReq->m_pHeaderIndex->m_headerLen[ headerIndex ]) = 0;
+ if ( *(pReq->m_pHttpHeader + off
+ + pReq->m_pHeaderIndex->m_headerLen[ headerIndex ]) )
+ {
+ *( pReq->m_pHttpHeader + off
+ + pReq->m_pHeaderIndex->m_headerLen[ headerIndex ]) = 0;
+ }
return pReq->m_pHttpHeader + off;
}
@@ -1830,12 +1832,21 @@ ssize_t LSAPI_Write_Stderr_r( LSAPI_Request * pReq, const char * pBuf, size_t le
static char * GetHeaderVar( LSAPI_Request * pReq, const char * name )
{
int i;
+ char * pValue;
for( i = 0; i < H_TRANSFER_ENCODING; ++i )
{
if ( pReq->m_pHeaderIndex->m_headerOff[i] )
{
if ( strcmp( name, CGI_HEADERS[i] ) == 0 )
- return pReq->m_pHttpHeader + pReq->m_pHeaderIndex->m_headerOff[i];
+ {
+ pValue = pReq->m_pHttpHeader
+ + pReq->m_pHeaderIndex->m_headerOff[i];
+ if ( *(pValue + pReq->m_pHeaderIndex->m_headerLen[i]) != '\0')
+ {
+ *(pValue + pReq->m_pHeaderIndex->m_headerLen[i]) = '\0';
+ }
+ return pValue;
+ }
}
}
if ( pReq->m_pHeader->m_cntUnknownHeaders > 0 )
@@ -1862,7 +1873,15 @@ static char * GetHeaderVar( LSAPI_Request * pReq, const char * name )
++p; ++pKey;
}
if (( pKey == pKeyEnd )&& (!*p ))
- return pReq->m_pHttpHeader + pCur->valueOff;
+ {
+ pValue = pReq->m_pHttpHeader + pCur->valueOff;
+
+ if ( *(pValue + pCur->valueLen) != '\0')
+ {
+ *(pValue + pCur->valueLen) = '\0';
+ }
+ return pValue;
+ }
++pCur;
}
}