From b0ca3094342b9283f351b526482d6f598d07a3b7 Mon Sep 17 00:00:00 2001
From: apriestman <apriestman@basistech.com>
Date: Wed, 8 Jul 2020 19:21:18 -0400
Subject: [PATCH] Encode database name for postgresql url

---
 .../sleuthkit/datamodel/CaseDatabaseFactory.java  | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
index d7782fef8..9b38c21b0 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
@@ -19,11 +19,15 @@
 package org.sleuthkit.datamodel;
 
 import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Properties;
+import java.util.logging.Logger;
+import java.util.logging.Level;
 import org.sleuthkit.datamodel.SQLHelper.PostgreSQLHelper;
 import org.sleuthkit.datamodel.SQLHelper.SQLiteHelper;
 
@@ -32,6 +36,7 @@
  */
 class CaseDatabaseFactory {
 	
+	private static final Logger logger = Logger.getLogger(CaseDatabaseFactory.class.getName());
 	private final SQLHelper dbQueryHelper;
 	private final DbCreationHelper dbCreationHelper;
 		
@@ -511,12 +516,20 @@ Connection getPostgresConnection() throws TskCoreException {
 		 * @return the connection to the database
 		 */
 		Connection getConnection(String databaseName) throws TskCoreException {
+			String encodedDbName;
+			try {
+				encodedDbName = URLEncoder.encode(databaseName, "UTF-8");
+			} catch (UnsupportedEncodingException ex) {
+				// Print the warning and continue with the unencoded name
+				logger.log(Level.WARNING, "Error encoding database name " + databaseName, ex);
+				encodedDbName = databaseName;
+			}
 			
 			StringBuilder url = new StringBuilder();
 			url.append(JDBC_BASE_URI)
 				.append(info.getHost())
 				.append('/') // NON-NLS
-				.append(databaseName);
+				.append(encodedDbName);
 			
 			Connection conn;
 			try {
-- 
GitLab