Преглед изворни кода

Protects against too long string when logging web services events

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@1960 a333f486-631f-4898-b8df-5754b55c2be0
dflaven пре 13 година
родитељ
комит
8dd61915ca
1 измењених фајлова са 18 додато и 4 уклоњено
  1. 18 4
      webservices/webservices.class.inc.php

+ 18 - 4
webservices/webservices.class.inc.php

@@ -283,12 +283,26 @@ abstract class WebServicesBase
 		$oLog->Set('userinfo', UserRights::GetUser());
 		$oLog->Set('userinfo', UserRights::GetUser());
 		$oLog->Set('verb', $sVerb);
 		$oLog->Set('verb', $sVerb);
 		$oLog->Set('result', $oRes->IsOk());
 		$oLog->Set('result', $oRes->IsOk());
-		$oLog->Set('log_info', $oRes->GetInfoAsText());
-		$oLog->Set('log_warning', $oRes->GetWarningsAsText());
-		$oLog->Set('log_error', $oRes->GetErrorsAsText());
-		$oLog->Set('data', $oRes->GetReturnedDataAsText());
+		$this->TrimAndSetValue($oLog, 'log_info', $oRes->GetInfoAsText());
+		$this->TrimAndSetValue($oLog, 'log_warning', $oRes->GetWarningsAsText());
+		$this->TrimAndSetValue($oLog, 'log_error', $oRes->GetErrorsAsText());
+		$this->TrimAndSetValue($oLog, 'data', $oRes->GetReturnedDataAsText());
 		$oLog->DBInsertNoReload();
 		$oLog->DBInsertNoReload();
 	}
 	}
+	
+	protected function TrimAndSetValue($oLog, $sAttCode, $sValue)
+	{
+		$oAttDef = MetaModel::GetAttributeDef(get_class($oLog), $sAttCode);
+		if (is_object($oAttDef))
+		{
+			$iMaxSize = $oAttDef->GetMaxSize();
+			if ($iMaxSize)
+			{
+				$sValue = substr($sValue, 0, $iMaxSize);
+			}
+			$oLog->Set($sAttCode, $sValue);
+		}
+	}
 
 
 	/**
 	/**
 	 * Helper to set a scalar attribute
 	 * Helper to set a scalar attribute