Fix errors returned by CCM functions.

Add new error code for calling functions in wrong order.

Signed-off-by: Mateusz Starzyk <mateusz.starzyk@mobica.com>
diff --git a/include/mbedtls/ccm.h b/include/mbedtls/ccm.h
index c903e68..d478414 100644
--- a/include/mbedtls/ccm.h
+++ b/include/mbedtls/ccm.h
@@ -61,6 +61,8 @@
 #define MBEDTLS_ERR_CCM_BAD_INPUT       -0x000D
 /** Authenticated decryption failed. */
 #define MBEDTLS_ERR_CCM_AUTH_FAILED     -0x000F
+/** CCM functions called in the wrong sequence. */
+#define MBEDTLS_ERR_CCM_BAD_SEQUENCE    -0x0011
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/library/ccm.c b/library/ccm.c
index 13582d2..33c631a 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -269,7 +269,7 @@
     {
         if( ctx->state & CCM_STATE__AUTH_DATA_FINISHED )
         {
-            return ret;
+            return MBEDTLS_ERR_CCM_BAD_SEQUENCE;
         }
 
         if( ctx->processed == 0 )
@@ -430,22 +430,22 @@
 int mbedtls_ccm_finish( mbedtls_ccm_context *ctx,
                         unsigned char *tag, size_t tag_len )
 {
-    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+    int ret;
     unsigned char i;
 
     if( ctx->state & CCM_STATE__ERROR )
     {
-        return ret;
+        return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
     }
 
     if( ctx->add_len > 0 && !( ctx->state & CCM_STATE__AUTH_DATA_FINISHED ) )
     {
-        return ret;
+        return MBEDTLS_ERR_CCM_BAD_SEQUENCE;
     }
 
     if( ctx->plaintext_len > 0 && ctx->processed != ctx->plaintext_len )
     {
-        return ret;
+        return MBEDTLS_ERR_CCM_BAD_SEQUENCE;
     }
 
     /*