Pārlūkot izejas kodu

fixed several issues that coverity reported

Ilya Kuznetsov 8 gadi atpakaļ
vecāks
revīzija
0d7b34fed2
3 mainītis faili ar 12 papildinājumiem un 3 dzēšanām
  1. 2 1
      src/searchd.cpp
  2. 3 2
      src/searchdhttp.cpp
  3. 7 0
      src/sphinxexpr.cpp

+ 2 - 1
src/searchd.cpp

@@ -8790,12 +8790,13 @@ void HandleCommandSearch ( ISphOutputBuffer & tOut, int iVer, InputBuffer_c & tR
 		return;
 	}
 
+	assert ( pThd );
 	SearchHandler_c tHandler ( iQueries, sphCreatePlainQueryParser(), false, ( iMasterVer==0 ), pThd->m_iConnID );
 	ARRAY_FOREACH ( i, tHandler.m_dQueries )
 		if ( !ParseSearchQuery ( tReq, tOut, tHandler.m_dQueries[i], iVer, iMasterVer ) )
 			return;
 
-	if ( pThd && tHandler.m_dQueries.GetLength() )
+	if ( tHandler.m_dQueries.GetLength() )
 	{
 		const CSphQuery & q = tHandler.m_dQueries[0];
 		pThd->SetThreadInfo ( "api-search query=\"%s\" comment=\"%s\"", q.m_sQuery.scstr(), q.m_sComment.scstr() );

+ 3 - 2
src/searchdhttp.cpp

@@ -150,7 +150,7 @@ static void EncodeResultJson ( const AggrResult_t & tRes, JsonEscapedBuilder & t
 				{
 					const BYTE * pFactors = (const BYTE *)tMatch.GetAttr ( tLoc );
 					sphUnpackPtrAttr ( pFactors, &pFactors );
-					if ( !pFactors )
+					if ( pFactors )
 					{
 						bool bStr = ( eAttrType==SPH_ATTR_FACTORS );
 						dTmp.Resize ( 0 );
@@ -163,7 +163,8 @@ static void EncodeResultJson ( const AggrResult_t & tRes, JsonEscapedBuilder & t
 							tOut += "\"";
 						} else
 							tOut += (const char *)dTmp.Begin();
-					}
+					} else
+						tOut += "null";
 				}
 				break;
 

+ 7 - 0
src/sphinxexpr.cpp

@@ -223,6 +223,13 @@ struct Expr_GetString_c : public Expr_WithLocator_c
 			}
 		} else
 		{
+			if ( !m_tLocator.m_bDynamic )
+			{
+				assert ( 0 && "unexpected static locator" );
+				*ppStr = NULL;
+				return 0;
+			}
+
 			const BYTE * pStr = (const BYTE *)tMatch.GetAttr ( m_tLocator );
 			return sphUnpackPtrAttr ( pStr, ppStr );
 		}