Index: /CKEditor/trunk/_source/plugins/bbcode/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/bbcode/plugin.js	(revision 7627)
+++ /CKEditor/trunk/_source/plugins/bbcode/plugin.js	(revision 7628)
@@ -469,5 +469,5 @@
 
 		// Parse it.
-		parser.parse( source );
+		parser.parse( CKEDITOR.tools.htmlEncode( source ) );
 
 		// Close all hanging nodes.
@@ -567,17 +567,31 @@
 
 					this.write( '[', tag );
-					var option = attributes.option;
-					option && this.write( '=', option );
+				}
+			},
+
+			openTagClose : function( tag )
+			{
+
+				if ( tag == 'br' )
+					this._.output.push( '\n' );
+				else if ( tag in bbcodeMap )
+				{
 					this.write( ']' );
-
 					if ( this.getRule( tag, 'breakAfterOpen' ) )
 						this.lineBreak( 1 );
 				}
-				else if ( tag == 'br' )
-					this._.output.push( '\n' );
 			},
 
-			openTagClose : function() { },
-			attribute : function() { },
+			attribute : function( name, val )
+			{
+				if ( name == 'option' )
+				{
+					// Force simply ampersand in attributes.
+					if ( typeof val == 'string' )
+						val = val.replace( /&amp;/g, '&' );
+
+					this.write( '=', val );
+				}
+			},
 
 			closeTag : function( tag )
