diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php
index 696f8cfd56ae284318987a5c95090c1710665b3c..e536c105f975a809f0c96f077410aed2b47808fb 100644
--- a/lib/SimpleSAML/Module.php
+++ b/lib/SimpleSAML/Module.php
@@ -173,12 +173,14 @@ class Module
         $translated_uri = $config->getBasePath() . 'module.php/' . $module . '/' . $url;
         $request->server->set('REQUEST_URI', $translated_uri);
         $request->server->set('SCRIPT_NAME', $config->getBasePath() . 'module.php');
+        // strip any NULL files (form file fields with nothing selected) because initialize() will throw an error on them
+        $request_files = array_filter($request->files->all(), function($val){return !is_null($val);});
         $request->initialize(
             $request->query->all(),
             $request->request->all(),
             $request->attributes->all(),
             $request->cookies->all(),
-            $request->files->all(),
+            $request_files ?? [],
             $request->server->all(),
             $request->getContent()
         );
diff --git a/modules/admin/lib/Controller/Federation.php b/modules/admin/lib/Controller/Federation.php
index 351e91ec7f775af2c121e1461a1770df34509144..c7e2165d9bbe01e7cb99cbd32b2799f10dd31a64 100644
--- a/modules/admin/lib/Controller/Federation.php
+++ b/modules/admin/lib/Controller/Federation.php
@@ -395,9 +395,8 @@ class Federation
     public function metadataConverter(Request $request)
     {
         Utils\Auth::requireAdmin();
-
         if ($xmlfile = $request->files->get('xmlfile')) {
-            $xmldata = trim(file_get_contents($xmlfile));
+            $xmldata = trim(file_get_contents($xmlfile->getPathname()));
         } elseif ($xmldata = $request->request->get('xmldata')) {
             $xmldata = trim($xmldata);
         }