diff --git a/library/error.c b/library/error.c
index 195a255064..4528ea1973 100644
--- a/library/error.c
+++ b/library/error.c
@@ -255,7 +255,10 @@ void error_strerror( int ret, char *buf, size_t buflen )
         if( use_ret == -(POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE) )
             snprintf( buf, buflen, "SSL - An unexpected message was received from our peer" );
         if( use_ret == -(POLARSSL_ERR_SSL_FATAL_ALERT_MESSAGE) )
+        {
             snprintf( buf, buflen, "SSL - A fatal alert message was received from our peer" );
+            return;
+        }
         if( use_ret == -(POLARSSL_ERR_SSL_PEER_VERIFY_FAILED) )
             snprintf( buf, buflen, "SSL - Verification of our peer failed" );
         if( use_ret == -(POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY) )
diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl
index 362534ef98..91dafd6c32 100755
--- a/scripts/generate_errors.pl
+++ b/scripts/generate_errors.pl
@@ -93,8 +93,19 @@ while (my $line = <GREP>)
         ${$old_define} = $define_name;
     }
 
-    ${$code_check} .= "${white_space}if( use_ret == -($error_name) )\n".
-                      "${white_space}    snprintf( buf, buflen, \"$module_name - $description\" );\n"
+    if ($error_name eq "POLARSSL_ERR_SSL_FATAL_ALERT_MESSAGE")
+    {
+        ${$code_check} .= "${white_space}if( use_ret == -($error_name) )\n".
+                          "${white_space}\{\n".
+                          "${white_space}    snprintf( buf, buflen, \"$module_name - $description\" );\n".
+                          "${white_space}    return;\n".
+                          "${white_space}}\n"
+    }
+    else
+    {
+        ${$code_check} .= "${white_space}if( use_ret == -($error_name) )\n".
+                          "${white_space}    snprintf( buf, buflen, \"$module_name - $description\" );\n"
+    }
 };
 
 if ($ll_old_define ne "")