Browse Source

sql logger: ensure error string and context are valid UTF8 before trying to insert it

Andrew Dolgov 7 months ago
parent
commit
bf5dfc444e
1 changed files with 5 additions and 0 deletions
  1. 5 0
      classes/logger/sql.php

+ 5 - 0
classes/logger/sql.php

@@ -15,6 +15,11 @@ class Logger_SQL {
 			if (DB_TYPE == "mysql")
 				$context = substr($context, 0, 65534);
 
+			// passed error message may contain invalid unicode characters, failing to insert an error here
+			// would break the execution entirely by generating an actual fatal error instead of a E_WARNING etc
+			$errstr = UConverter::transcode($errstr, 'UTF-8', 'UTF-8');
+			$context = UConverter::transcode($context, 'UTF-8', 'UTF-8');
+
 			$sth = $this->pdo->prepare("INSERT INTO ttrss_error_log
 				(errno, errstr, filename, lineno, context, owner_uid, created_at) VALUES
 				(?, ?, ?, ?, ?, ?, NOW())");