- Require different input and output buffer in cipher_update()
 - Fixed style typos

diff --git a/library/cipher.c b/library/cipher.c
index 345e2fe..697ff54 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -197,8 +197,11 @@
 {
     int copy_len = 0;
 
-    if( NULL == ctx || NULL == ctx->cipher_info || NULL == olen )
+    if( NULL == ctx || NULL == ctx->cipher_info || NULL == olen ||
+        input == output )
+    {
         return 1;
+    }
 
     *olen = 0;
 
@@ -295,16 +298,16 @@
     int i = 0;
     unsigned char padding_len = 0;
 
-    if ( NULL == input || NULL == data_len )
+    if( NULL == input || NULL == data_len )
         return 1;
 
     padding_len = input[input_len - 1];
 
-    if ( padding_len > input_len )
+    if( padding_len > input_len )
         return 2;
 
-    for ( i = input_len - padding_len; i < input_len; i++ )
-        if ( input[i] != padding_len )
+    for( i = input_len - padding_len; i < input_len; i++ )
+        if( input[i] != padding_len )
             return 2;
 
     *data_len = input_len - padding_len;