mirror of
https://github.com/moparisthebest/davmail
synced 2025-01-09 20:58:05 -05:00
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:
parent
2d31c523cd
commit
affdaf3c76
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user