Add exceptions for remaing cases where XML::Parser.string is used, to catch for empty...
authorThomas Wood <grand.edgemaster@gmail.com>
Thu, 9 Apr 2009 22:37:43 +0000 (22:37 +0000)
committerThomas Wood <grand.edgemaster@gmail.com>
Thu, 9 Apr 2009 22:37:43 +0000 (22:37 +0000)
See also r14241

app/controllers/changeset_controller.rb
app/controllers/user_preference_controller.rb
app/models/node.rb

index e88387a760907b2f066a9be423405b55d0a2787b..bba012a9c8c871bef56daf89a8d9d57ffef88fc5 100644 (file)
@@ -114,6 +114,8 @@ class ChangesetController < ApplicationController
       render :nothing => true, :status => :method_not_allowed
     end
 
+  rescue LibXML::XML::Error, ArgumentError => ex
+    raise OSM::APIBadXMLError.new("osm", xml, ex.message)
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
   rescue OSM::APIError => ex
index 68ea88eeac5922def89f7e7e947f73c68332e072..b07f4ecc5d0e287051522099a1dfb96a3ce9fac4 100644 (file)
@@ -52,7 +52,11 @@ class UserPreferenceController < ApplicationController
 
   # update the entire set of preferences
   def update
-    p = XML::Parser.string(request.raw_post)
+    do
+      p = XML::Parser.string(request.raw_post)
+    rescue LibXML::XML::Error, ArgumentError => ex
+      raise OSM::APIBadXMLError.new("preferences", xml, ex.message)
+    end
     doc = p.parse
 
     prefs = []
index f6726f91a05c730506979e93153c0f1cfca1a2c0..c45057e10874a01ab6b1dd771c96631f05e622d1 100644 (file)
@@ -70,7 +70,7 @@ class Node < ActiveRecord::Base
       doc.find('//osm/node').each do |pt|
         return Node.from_xml_node(pt, create)
       end
-    rescue LibXML::XML::Error => ex
+    rescue LibXML::XML::Error, ArgumentError => ex
       raise OSM::APIBadXMLError.new("node", xml, ex.message)
     end
   end