From bf7ff93cc3b97f3f78c0bc94d8f6eda3945229a0 Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Thu, 22 Jan 2015 05:18:14 +1100 Subject: [PATCH 1/3] Fix multiple pieces of code in lsapilib.c. --- sapi/litespeed/lsapilib.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c index 2e607013613ea..16aade0874905 100644 --- a/sapi/litespeed/lsapilib.c +++ b/sapi/litespeed/lsapilib.c @@ -1872,10 +1872,12 @@ static char * GetHeaderVar( LSAPI_Request * pReq, const char * name ) char * LSAPI_GetEnv_r( LSAPI_Request * pReq, const char * name ) { + if ( !pReq || !name ) + return NULL; + struct LSAPI_key_value_pair * pBegin = pReq->m_pEnvList; struct LSAPI_key_value_pair * pEnd = pBegin + pReq->m_pHeader->m_cntEnv; - if ( !pReq || !name ) - return NULL; + if ( strncmp( name, "HTTP_", 5 ) == 0 ) { return GetHeaderVar( pReq, name ); @@ -2282,7 +2284,7 @@ int LSAPI_ParseSockAddr( const char * pBind, struct sockaddr * pAddr ) while( isspace( *pBind ) ) ++pBind; - strncpy( achAddr, pBind, 256 ); + strncpy( achAddr, pBind, sizeof(pBind) ); switch( *p ) { @@ -3112,6 +3114,10 @@ static int lsapi_initSuEXEC() if ( !s_defaultUid || !s_defaultGid ) { pw = getpwnam( "nobody" ); + if(!pw) { + perror( "Can't get uid for user 'nobody'" ); + return -1; + } if ( !s_defaultUid ) s_defaultUid = pw->pw_uid; if ( !s_defaultGid ) @@ -3376,7 +3382,7 @@ void lsapi_MD5Final(unsigned char digest[16], struct lsapi_MD5Context *ctx) lsapi_MD5Transform(ctx->buf, (uint32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); memmove(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ } /* The four core functions - F1 is optimized somewhat */ From dce6718dbd0168ca8ab63464c49eabef2f1597b1 Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Thu, 22 Jan 2015 05:18:41 +1100 Subject: [PATCH 2/3] Fix null pointer dereference --- sapi/litespeed/lsapi_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c index 2b2385ccdfe4b..d767306c598d3 100644 --- a/sapi/litespeed/lsapi_main.c +++ b/sapi/litespeed/lsapi_main.c @@ -487,7 +487,7 @@ static int lsapi_chdir_primary_script( zend_file_handle * file_handle ) getcwd( s_cur_chdir, sizeof( s_cur_chdir ) ); p = strrchr( file_handle->filename, '/' ); - if ( *p ) + if ( p ) { *p = 0; if ( strcmp( file_handle->filename, s_cur_chdir ) != 0 ) { From 464de8400fa25097d1da3341513c74ed1ef14538 Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Thu, 22 Jan 2015 05:21:13 +1100 Subject: [PATCH 3/3] Further improvements in litespeed --- sapi/litespeed/lsapi_main.c | 1 + sapi/litespeed/lsapilib.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c index d767306c598d3..8144706b9655d 100644 --- a/sapi/litespeed/lsapi_main.c +++ b/sapi/litespeed/lsapi_main.c @@ -716,6 +716,7 @@ static int parse_opt( int argc, char * argv[], int *climode, case '?': if ( *((*(p-1))+2) == 's' ) exit( 99 ); + break; case 'h': case 'i': case 'l': diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c index 16aade0874905..16d3d9c8ba537 100644 --- a/sapi/litespeed/lsapilib.c +++ b/sapi/litespeed/lsapilib.c @@ -1873,7 +1873,7 @@ static char * GetHeaderVar( LSAPI_Request * pReq, const char * name ) char * LSAPI_GetEnv_r( LSAPI_Request * pReq, const char * name ) { if ( !pReq || !name ) - return NULL; + return NULL; struct LSAPI_key_value_pair * pBegin = pReq->m_pEnvList; struct LSAPI_key_value_pair * pEnd = pBegin + pReq->m_pHeader->m_cntEnv; @@ -3114,10 +3114,10 @@ static int lsapi_initSuEXEC() if ( !s_defaultUid || !s_defaultGid ) { pw = getpwnam( "nobody" ); - if(!pw) { - perror( "Can't get uid for user 'nobody'" ); - return -1; - } + if(!pw) { + perror( "Can't get uid for user 'nobody'" ); + return -1; + } if ( !s_defaultUid ) s_defaultUid = pw->pw_uid; if ( !s_defaultGid )