GCM in the cipher layer, step 1

- no support for additional data
- no support for tag
diff --git a/library/gcm.c b/library/gcm.c
index 3e9969d..9c079bd 100644
--- a/library/gcm.c
+++ b/library/gcm.c
@@ -293,11 +293,11 @@
     uint64_t orig_len = ctx->len * 8;
     uint64_t orig_add_len = ctx->add_len * 8;
 
-    memcpy( tag, ctx->base_ectr, tag_len );
-
     if( tag_len > 16 )
         return( POLARSSL_ERR_GCM_BAD_INPUT );
 
+    memcpy( tag, ctx->base_ectr, tag_len );
+
     if( orig_len || orig_add_len )
     {
         memset( work_buf, 0x00, 16 );