From dd54c4db7ffd5458ba4aca7a96f7488a2fb909d5 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 30 Apr 2018 15:42:39 +0200
Subject: [PATCH] OO-3415: cut long uri (longer than 1024 characters)

---
 .../services/csp/manager/CSPManagerImpl.java  | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/services/csp/manager/CSPManagerImpl.java b/src/main/java/org/olat/core/commons/services/csp/manager/CSPManagerImpl.java
index 8110a539833..592c710cab0 100644
--- a/src/main/java/org/olat/core/commons/services/csp/manager/CSPManagerImpl.java
+++ b/src/main/java/org/olat/core/commons/services/csp/manager/CSPManagerImpl.java
@@ -49,22 +49,22 @@ public class CSPManagerImpl implements CSPManager {
 	public CSPLog log(CSPReport report, Identity identity) {
 		CSPLogImpl log = new CSPLogImpl();
 		log.setCreationDate(new Date());
-		log.setBlockedUri(report.getBlockedUri());
+		log.setBlockedUri(cut(report.getBlockedUri(), 1024));
 		if(StringHelper.isLong(report.getColumnNumber())) {
 			log.setColumnNumber(Long.parseLong(report.getColumnNumber()));
 		}
 		log.setDisposition(report.getDisposition());
-		log.setDocumentUri(report.getDocumentUri());
+		log.setDocumentUri(cut(report.getDocumentUri(), 1024));
 		log.setEffectiveDirective(report.getEffectiveDirective());
 		if(StringHelper.isLong(report.getLineNumber())) {
 			log.setLineNumber(Long.parseLong(report.getLineNumber()));
 		}
 		log.setOriginalPolicy(report.getOriginalPolicy());
-		log.setReferrer(report.getReferrer());
+		log.setReferrer(cut(report.getReferrer(), 1024));
 		log.setScriptSample(report.getScriptSample());
-		log.setSourceFile(report.getSourceFile());
-		log.setStatusCode(report.getStatusCode());
-		log.setViolatedDirective(report.getViolatedDirective());
+		log.setSourceFile(cut(report.getSourceFile(), 1024));
+		log.setStatusCode(cut(report.getStatusCode(), 1024));
+		log.setViolatedDirective(cut(report.getViolatedDirective(), 1024));
 		if(identity != null) {
 			log.setIdentityKey(identity.getKey());
 		}
@@ -72,6 +72,13 @@ public class CSPManagerImpl implements CSPManager {
 		dbInstance.getCurrentEntityManager().persist(log);
 		return log;
 	}
+	
+	private String cut(String value, int length) {
+		if(StringHelper.containsNonWhitespace(value) && value.length() > length) {
+			value = value.substring(0, length - 10);
+		}
+		return value;
+	}
 
 	@Override
 	public int countLog() {
-- 
GitLab