diff --git a/lib/galaxy/web/form_builder.py b/lib/galaxy/web/form_builder.py
index d06202f6966..c360075c463 100644
--- a/lib/galaxy/web/form_builder.py
+++ b/lib/galaxy/web/form_builder.py
@@ -3,6 +3,7 @@ Classes for generating HTML forms
"""
import logging,sys
+from cgi import escape
log = logging.getLogger(__name__)
class BaseField(object):
@@ -28,7 +29,7 @@ class TextField(BaseField):
self.value = value or ""
def get_html( self, prefix="" ):
return '' \
- % ( prefix, self.name, self.size, self.value )
+ % ( prefix, self.name, self.size, escape(str(self.value), quote=True) )
def set_size(self, size):
self.size = int( size )
@@ -49,7 +50,7 @@ class TextArea(BaseField):
self.value = value or ""
def get_html( self, prefix="" ):
return '' \
- % ( prefix, self.name, self.rows, self.cols, self.value )
+ % ( prefix, self.name, self.rows, self.cols, escape(str(self.value), quote=True) )
def set_size(self, rows, cols):
self.rows = rows
self.cols = cols
@@ -113,7 +114,7 @@ class HiddenField(BaseField):
self.name = name
self.value = value or ""
def get_html( self, prefix="" ):
- return '' % ( prefix, self.name, self.value )
+ return '' % ( prefix, self.name, escape(str(self.value), quote=True) )
class SelectField(BaseField):
"""
@@ -190,9 +191,9 @@ class SelectField(BaseField):
if len(self.options) > 2 and ctr % 2 == 1:
style = " class=\"odd_row\""
if selected:
- rval.append( '
%s
' % ( style, prefix, self.name, value, text) )
+ rval.append( '%s
' % ( style, prefix, self.name, escape(str(value), quote=True), text) )
else:
- rval.append( '%s
' % ( style, prefix, self.name, value, text) )
+ rval.append( '%s
' % ( style, prefix, self.name, escape(str(value), quote=True), text) )
ctr += 1
return "\n".join( rval )
def get_html_radio( self, prefix="" ):
@@ -204,7 +205,7 @@ class SelectField(BaseField):
style = " class=\"odd_row\""
if selected: selected_text = " checked"
else: selected_text = ""
- rval.append( '%s
' % ( style, prefix, self.name, self.refresh_on_change_text, value, selected_text, text ) )
+ rval.append( '%s
' % ( style, prefix, self.name, self.refresh_on_change_text, escape(str(value), quote=True), selected_text, text ) )
ctr += 1
return "\n".join( rval )
def get_html_default( self, prefix="" ):
@@ -217,9 +218,9 @@ class SelectField(BaseField):
selected_text = " selected"
last_selected_value = value
else: selected_text = ""
- rval.append( '' % ( value, selected_text, text ) )
+ rval.append( '' % ( escape(str(value), quote=True), selected_text, text ) )
if last_selected_value:
- last_selected_value = ' last_selected_value="%s"' % last_selected_value
+ last_selected_value = ' last_selected_value="%s"' % escape(str(last_selected_value), quote=True)
rval.insert( 0, '' )
return "\n".join( rval )
@@ -326,12 +327,12 @@ class DrillDownField( BaseField ):
if option['value'] in expanded_options:
default_state = 'expanded'
default_icon = '[-]'
- html.append( '%s%s' % ( default_icon, self.display, prefix, self.name, option['value'], selected, option['name']) )
+ html.append( '%s%s' % ( default_icon, self.display, prefix, self.name, escape(str(option['value']), quote=True), selected, option['name']) )
html.append( '')
else:
- html.append( '%s' % ( self.display, prefix, self.name, option['value'], selected, option['name']) )
+ html.append( '%s' % ( self.display, prefix, self.name, escape(str(option['value']), quote=True), selected, option['name']) )
html.append( '' )
rval = []
rval.append( '