diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c
index c045322..ddfb006 100644
--- a/library/cipher_wrap.c
+++ b/library/cipher_wrap.c
@@ -129,7 +129,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
@@ -149,7 +149,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CFB */
 }
 
@@ -169,7 +169,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CTR */
 }
 
@@ -483,7 +483,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
@@ -503,7 +503,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CFB */
 }
 
@@ -523,7 +523,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CTR */
 }
 
@@ -843,7 +843,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
@@ -861,7 +861,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
@@ -877,7 +877,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 }
 
 static int des_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
@@ -892,7 +892,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 }
 
 static int des_setkey_dec_wrap( void *ctx, const unsigned char *key,
@@ -1100,7 +1100,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
@@ -1120,7 +1120,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CFB */
 }
 
@@ -1140,7 +1140,7 @@
     ((void) input);
     ((void) output);
 
-    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+    return( POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE );
 #endif /* POLARSSL_CIPHER_MODE_CTR */
 }
 
@@ -1302,7 +1302,7 @@
 
 static void * null_ctx_alloc( void )
 {
-    return (void *) 1;
+    return( (void *) 1 )
 }
 
 static void null_ctx_free( void *ctx )
