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