Fixes from audit

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2253 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2014-03-10 22:22:33 +00:00
parent 2d31c523cd
commit affdaf3c76
1 changed files with 30 additions and 24 deletions

View File

@ -31,6 +31,7 @@ public class VProperty {
} }
protected static final HashSet<String> MULTIVALUED_PROPERTIES = new HashSet<String>(); protected static final HashSet<String> MULTIVALUED_PROPERTIES = new HashSet<String>();
static { static {
MULTIVALUED_PROPERTIES.add("RESOURCES"); MULTIVALUED_PROPERTIES.add("RESOURCES");
MULTIVALUED_PROPERTIES.add("LOCATION"); MULTIVALUED_PROPERTIES.add("LOCATION");
@ -244,13 +245,13 @@ public class VProperty {
/** /**
* Set param value on property. * Set param value on property.
* *
* @param paramName param name * @param paramName param name
* @param paramValue param value * @param paramValue param value
*/ */
public void setParam(String paramName, String paramValue) { public void setParam(String paramName, String paramValue) {
Param currentParam = getParam(paramName); Param currentParam = getParam(paramName);
if (currentParam != null) { if (currentParam != null) {
getParams().remove(currentParam); params.remove(currentParam);
} }
addParam(paramName, paramValue); addParam(paramName, paramValue);
} }
@ -258,7 +259,7 @@ public class VProperty {
/** /**
* Add param value on property. * Add param value on property.
* *
* @param paramName param name * @param paramName param name
* @param paramValue param value * @param paramValue param value
*/ */
public void addParam(String paramName, String paramValue) { public void addParam(String paramName, String paramValue) {
@ -291,6 +292,11 @@ public class VProperty {
return null; return null;
} }
/**
* Return param value.
* @param paramName param name
* @return value
*/
public String getParamValue(String paramName) { public String getParamValue(String paramName) {
Param param = getParam(paramName); Param param = getParam(paramName);
if (param != null) { if (param != null) {
@ -386,10 +392,7 @@ public class VProperty {
if (params != null) { if (params != null) {
for (Param param : params) { for (Param param : params) {
buffer.append(';').append(param.name); buffer.append(';').append(param.name);
if (param.values != null) { appendParamValues(buffer, param);
buffer.append('=');
appendParamValues(buffer, param);
}
} }
} }
buffer.append(':'); buffer.append(':');
@ -410,22 +413,25 @@ public class VProperty {
} }
protected void appendParamValues(StringBuilder buffer, Param param) { protected void appendParamValues(StringBuilder buffer, Param param) {
boolean first = true; if (param.values != null) {
for (String value : param.values) { buffer.append('=');
if (first) { boolean first = true;
first = false; for (String value : param.values) {
} else { if (first) {
buffer.append(','); first = false;
} } else {
// always quote CN param buffer.append(',');
if ("CN".equalsIgnoreCase(param.name) }
// quote param values with special characters // always quote CN param
|| value.indexOf(';') >= 0 || value.indexOf(',') >= 0 if ("CN".equalsIgnoreCase(param.name)
|| value.indexOf('(') >= 0 || value.indexOf('/') >= 0 // quote param values with special characters
|| value.indexOf(':') >= 0) { || value.indexOf(';') >= 0 || value.indexOf(',') >= 0
buffer.append('"').append(value).append('"'); || value.indexOf('(') >= 0 || value.indexOf('/') >= 0
} else { || value.indexOf(':') >= 0) {
buffer.append(value); buffer.append('"').append(value).append('"');
} else {
buffer.append(value);
}
} }
} }
} }
@ -441,7 +447,7 @@ public class VProperty {
char c = value.charAt(i); char c = value.charAt(i);
if (c == '\n') { if (c == '\n') {
buffer.append("\\n"); buffer.append("\\n");
} else if (MULTIVALUED_PROPERTIES.contains(key) && c==',') { } else if (MULTIVALUED_PROPERTIES.contains(key) && c == ',') {
buffer.append('\\').append(','); buffer.append('\\').append(',');
} else { } else {
buffer.append(value.charAt(i)); buffer.append(value.charAt(i));