From c9d908316a338edafe8933564961f4c7ec97ca67 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 13 Jul 2010 07:08:40 +0000 Subject: [PATCH] Carddav: encode comma and \n in values git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1180 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/VCardWriter.java | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/java/davmail/exchange/VCardWriter.java b/src/java/davmail/exchange/VCardWriter.java index 4e6d8dc4..a9c6fbce 100644 --- a/src/java/davmail/exchange/VCardWriter.java +++ b/src/java/davmail/exchange/VCardWriter.java @@ -58,14 +58,34 @@ public class VCardWriter extends ICSBufferedWriter { } else { valueBuffer.append(';'); } - if (value != null) { - valueBuffer.append(value); - } + appendEncodedValue(valueBuffer, value); } writeLine(valueBuffer.toString()); } } + /** + * Encode and append value to buffer + * + * @param buffer current buffer + * @param value property value + */ + private void appendEncodedValue(StringBuilder buffer, String value) { + if (value != null) { + for (int i = 0; i < value.length();i++) { + char c = value.charAt(i); + if (c == ',') { + buffer.append('\\'); + } + if (c == '\n') { + buffer.append("\\n"); + } else { + buffer.append(value.charAt(i)); + } + } + } + } + public void endCard() { writeLine("END:VCARD"); }