From 8d9e7f2b1ba309d1ba3c1153232656da78794479 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 17 Aug 2019 16:09:21 +0100
Subject: [PATCH] Improve error reporting

And fix a bug with inline XML descriptors.
---
 cmd/saml-server/main.go | 6 +++---
 saml/saml.go            | 6 ++++--
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/cmd/saml-server/main.go b/cmd/saml-server/main.go
index b9bf23e..7be2530 100644
--- a/cmd/saml-server/main.go
+++ b/cmd/saml-server/main.go
@@ -42,15 +42,15 @@ func main() {
 
 	config, err := loadConfig()
 	if err != nil {
-		log.Fatal(err)
+		log.Fatalf("error loading configuration: %v", err)
 	}
 
 	s, err := saml.NewSAMLIDP(config.SAMLConfig)
 	if err != nil {
-		log.Fatal(err)
+		log.Fatalf("error instantiating SAML IDP: %v", err)
 	}
 
 	if err := serverutil.Serve(s, config.ServerConfig, *addr); err != nil {
-		log.Fatal(err)
+		log.Fatalf("error: %v", err)
 	}
 }
diff --git a/saml/saml.go b/saml/saml.go
index 1638156..614044b 100644
--- a/saml/saml.go
+++ b/saml/saml.go
@@ -88,12 +88,14 @@ func (c *Config) loadServiceProviders() error {
 			var err error
 			data, err = ioutil.ReadFile(sp.Descriptor[1:])
 			if err != nil {
-				return err
+				return fmt.Errorf("reading %s: %v", sp.Descriptor[1:], err)
 			}
+		} else {
+			data = []byte(sp.Descriptor)
 		}
 		var ent saml.EntityDescriptor
 		if err := xml.Unmarshal(data, &ent); err != nil {
-			return err
+			return fmt.Errorf("error unmarshaling descriptor: %v", err)
 		}
 		sp.parsed = &ent
 		c.serviceProviderMap[ent.EntityID] = sp
-- 
GitLab