diff --git a/app/models/status_message.rb b/app/models/status_message.rb index 2c36387df..a9eb800f7 100644 --- a/app/models/status_message.rb +++ b/app/models/status_message.rb @@ -24,7 +24,7 @@ class StatusMessage < Post def to_activity <<-XML - #{CGI::escape(self.message)} + #{x(self.message)} #{person.url}status_messages/#{self.id} #{self.created_at.xmlschema} diff --git a/lib/diaspora/ostatus_builder.rb b/lib/diaspora/ostatus_builder.rb index 21b568cf1..4052d5fa0 100644 --- a/lib/diaspora/ostatus_builder.rb +++ b/lib/diaspora/ostatus_builder.rb @@ -19,6 +19,8 @@ module Diaspora class OstatusBuilder + include Diaspora::Webhooks + def initialize(user) @user = user end @@ -29,11 +31,11 @@ module Diaspora Diaspora #{@user.public_url}.atom -#{@user.name}'s Public Feed +#{x@user.name)}'s Public Feed Posts from Diaspora #{Time.now.xmlschema} - #{CGI::escape(@user.name)} + #{x(@user.name)} #{@user.public_url} XML @@ -51,7 +53,7 @@ module Diaspora http://activitystrea.ms/schema/1.0/person #{@user.public_url} - #{@user.name} + #{x(@user.name)} diff --git a/lib/diaspora/webhooks.rb b/lib/diaspora/webhooks.rb index fa1b75e32..4439fecdb 100644 --- a/lib/diaspora/webhooks.rb +++ b/lib/diaspora/webhooks.rb @@ -11,5 +11,17 @@ module Diaspora xml += "" end + def x(input) + result.gsub!(/[&<>'"]/) do | match | + case match + when '&' then return '&' + when '<' then return '<' + when '>' then return '>' + when "'" then return ''' + when '"' then return '"e;' + end + end + return result + end end end