diff src/main/java/org/monetdb/jdbc/MonetWrapper.java @ 965:8aaa9964359a

Fix missing escaping of single back slashes in string data provided to PreparedStatement methods setString(), setClob(), setObject() and setURL(). Also corrected and extended test Test_PSsetBytes.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 12 Feb 2025 21:53:06 +0100 (2 months ago)
parents d416e9b6b3d0
children
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetWrapper.java
+++ b/src/main/java/org/monetdb/jdbc/MonetWrapper.java
@@ -108,11 +108,11 @@ public class MonetWrapper implements jav
 	 */
 	public static final String dq(final String in) {
 		String ret = in;
-		if (ret.contains("\\\\"))
-			// all double slashes in input need to be escaped.
+		if (ret.indexOf('\\') >= 0)
+			// every back slash in input needs to be escaped.
 			ret = ret.replaceAll("\\\\", "\\\\\\\\");
-		if (ret.contains("\""))
-			// all double quotes in input need to be escaped.
+		if (ret.indexOf('"') >= 0)
+			// every double quote in input needs to be escaped.
 			ret = ret.replaceAll("\"", "\\\\\"");
 		return "\"" + ret + "\"";
 	}
@@ -128,11 +128,11 @@ public class MonetWrapper implements jav
 	 */
 	public static final String sq(final String in) {
 		String ret = in;
-		if (ret.contains("\\\\"))
-			// all double slashes in input need to be escaped.
+		if (ret.indexOf('\\') >= 0)
+			// every back slash in input needs to be escaped.
 			ret = ret.replaceAll("\\\\", "\\\\\\\\");
-		if (ret.contains("'"))
-			// all single quotes in input need to be escaped.
+		if (ret.indexOf('\'') >= 0)
+			// every single quote in input needs to be escaped.
 			ret = ret.replaceAll("'", "\\\\'");
 		return "'" + ret + "'";
 	}