From 00343347b289c023912ece7132e3859d9d689b91 Mon Sep 17 00:00:00 2001
From: Samer Afach <info@afach.de>
Date: Wed, 30 May 2018 22:44:38 +0200
Subject: [PATCH] Fixed many warnings that appear due to assert not being
 executed in release mode.

---
 examples/simple_ex2.cc           | 6 ++----
 include/jwt/algorithm.hpp        | 6 +++++-
 include/jwt/impl/error_codes.ipp | 6 +++---
 include/jwt/jwt.hpp              | 4 +++-
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/examples/simple_ex2.cc b/examples/simple_ex2.cc
index bdc70d1..3804904 100644
--- a/examples/simple_ex2.cc
+++ b/examples/simple_ex2.cc
@@ -37,12 +37,10 @@ int main() {
 
   //Using `add_claim` with extra features.
   //Check return status and overwrite
-  bool ret = obj.payload().add_claim("sub", "new test", false/*overwrite*/);
-  assert (not ret);
+  assert (not obj.payload().add_claim("sub", "new test", false/*overwrite*/));
 
   // Overwrite an existing claim
-  ret = obj.payload().add_claim("sub", "new test", true/*overwrite*/);
-  assert ( ret );
+  assert (obj.payload().add_claim("sub", "new test", true/*overwrite*/));
 
   assert (obj.payload().has_claim_with_value("sub", "new test"));
 
diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp
index 8aa528e..b013a39 100644
--- a/include/jwt/algorithm.hpp
+++ b/include/jwt/algorithm.hpp
@@ -211,6 +211,7 @@ enum class algorithm
   ES256,
   ES384,
   ES512,
+  UNKN,
   TERM,
 };
 
@@ -233,9 +234,10 @@ inline jwt::string_view alg_to_str(enum algorithm alg) noexcept
     case algorithm::ES512: return "ES512";
     case algorithm::TERM:  return "TERM";
     case algorithm::NONE:  return "NONE";
+    case algorithm::UNKN:  return "UNKN";
     default:               assert (0 && "Unknown Algorithm");
   };
-
+  return "UNKN";
   assert (0 && "Code not reached");
 }
 
@@ -258,6 +260,8 @@ inline enum algorithm str_to_alg(const jwt::string_view alg) noexcept
   if (!strcasecmp(alg.data(), "es384")) return algorithm::ES384;
   if (!strcasecmp(alg.data(), "es512")) return algorithm::ES512;
 
+  return algorithm::UNKN;
+
   assert (0 && "Code not reached");
 }
 
diff --git a/include/jwt/impl/error_codes.ipp b/include/jwt/impl/error_codes.ipp
index c4f6b43..4118d32 100644
--- a/include/jwt/impl/error_codes.ipp
+++ b/include/jwt/impl/error_codes.ipp
@@ -49,7 +49,7 @@ struct AlgorithmErrCategory: std::error_category
     case AlgorithmErrc::NoneAlgorithmUsed:
       return "none algorithm used";
     };
-
+    return "unknown algorithm error";
     assert (0 && "Code not reached");
   }
 };
@@ -86,7 +86,7 @@ struct DecodeErrorCategory: std::error_category
     case DecodeErrc::KeyNotRequiredForNoneAlg:
       return "key not required for NONE algorithm";
     };
-
+    return "unknown decode error";
     assert (0 && "Code not reached");
   }
 };
@@ -125,7 +125,7 @@ struct VerificationErrorCategory: std::error_category
     case VerificationErrc::TypeConversionError:
       return "type conversion error";
     };
-
+    return "unknown verification error";
     assert (0 && "Code not reached");
   }
 };
diff --git a/include/jwt/jwt.hpp b/include/jwt/jwt.hpp
index de540b5..1eb28a4 100644
--- a/include/jwt/jwt.hpp
+++ b/include/jwt/jwt.hpp
@@ -64,6 +64,8 @@ inline enum type str_to_type(const jwt::string_view typ) noexcept
 
   if (!strcasecmp(typ.data(), "jwt")) return type::JWT;
 
+  throw std::runtime_error("Unknown token type");
+
   assert (0 && "Code not reached");
 }
 
@@ -121,7 +123,7 @@ inline jwt::string_view reg_claims_to_str(enum registered_claims claim) noexcept
     case registered_claims::jti:        return "jti";
     default:                            assert (0 && "Not a registered claim");
   };
-
+  return "";
   assert (0 && "Code not reached");
 }