Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcaustin2013-02-07 15:29:13 +0000
committercaustin2013-02-07 15:29:13 +0000
commit7b293beeb999f49dd0a9d0b2da4ced4a18d0d0c4 (patch)
tree1a4dcf96b20166a065e619e2a1b8f39def1a4e04
parent3b19317d7d9dbb0527bf0d87499fe6b23a1c64e2 (diff)
downloadeclipse.platform.ua-7b293beeb999f49dd0a9d0b2da4ced4a18d0d0c4.tar.gz
eclipse.platform.ua-7b293beeb999f49dd0a9d0b2da4ced4a18d0d0c4.tar.xz
eclipse.platform.ua-7b293beeb999f49dd0a9d0b2da4ced4a18d0d0c4.zip
Bug 379269 - [Help] Security vulnerabilities in toolbar.jsp
-rw-r--r--org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/ToolbarData.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/ToolbarData.java b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/ToolbarData.java
index a68ee1dc3..df73c517e 100644
--- a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/ToolbarData.java
+++ b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/ToolbarData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,6 +11,8 @@
package org.eclipse.help.internal.webapp.data;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.servlet.*;
import javax.servlet.http.*;
@@ -30,6 +32,7 @@ public class ToolbarData extends RequestData {
private static final String BUTTON_EXTENSION_POINT = "org.eclipse.help.webapp.toolbarButton"; //$NON-NLS-1$
private ToolbarButton[] buttons;
private String[] scriptFiles;
+ private static Pattern jsNamePattern = Pattern.compile("^[a-zA-Z_$][a-zA-Z1-9_]*"); //$NON-NLS-1$
public ToolbarData(ServletContext context, HttpServletRequest request,
@@ -75,12 +78,16 @@ public class ToolbarData extends RequestData {
for (int i = 0; i < names.length; i++) {
if ("".equals(names[i])) //$NON-NLS-1$
buttonList.add(new ToolbarButton());
- else
- buttonList.add(new ToolbarButton(names[i], ServletResources
- .getString(tooltips[i], request), preferences
- .getImagesDirectory()
- + "/e_" + images[i], //$NON-NLS-1$
- actions[i], params[i], states[i]));
+ else{
+ // Is this a valid javascript name (and not a script injection)
+ Matcher matcher = jsNamePattern.matcher(names[i]);
+ if (matcher.matches())
+ buttonList.add(new ToolbarButton(names[i], ServletResources
+ .getString(tooltips[i], request), preferences
+ .getImagesDirectory()
+ + "/e_" + images[i], //$NON-NLS-1$
+ actions[i], params[i], states[i]));
+ }
}
addExtensionButtons(buttonList);

Back to the top