diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c
index ab29dfa..2dea5c9 100644
--- a/library/aead_chacha20_poly1305.c
+++ b/library/aead_chacha20_poly1305.c
@@ -174,10 +174,15 @@
                                                size_t aad_len,
                                                const unsigned char *aad )
 {
-    if ( ( ctx == NULL ) || ( aad == NULL ) )
+    if ( ctx == NULL )
     {
         return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA );
     }
+    else if ( ( aad_len > 0U ) && ( aad == NULL ) )
+    {
+        /* aad pointer is allowed to be NULL if aad_len == 0 */
+        return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA );
+    }
     else if ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD )
     {
         return (MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE );
@@ -197,6 +202,11 @@
     {
         return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA );
     }
+    else if ( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) )
+    {
+        /* input and output pointers are allowed to be NULL if len == 0 */
+        return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA );
+    }
     else if ( ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) &&
               ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) )
     {
diff --git a/library/chacha20.c b/library/chacha20.c
index b20c7ad..3511245 100644
--- a/library/chacha20.c
+++ b/library/chacha20.c
@@ -291,10 +291,15 @@
     size_t offset = 0U;
     size_t i;
 
-    if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) )
+    if ( ctx == NULL )
     {
         return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA );
     }
+    else if ( ( size > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) )
+    {
+        /* input and output pointers are allowed to be NULL only if size == 0 */
+        return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA );
+    }
 
     /* Use leftover keystream bytes, if available */
     while ( ( size > 0U ) && ( ctx->keystream_bytes_used < CHACHA20_BLOCK_SIZE_BYTES ) )
diff --git a/library/poly1305.c b/library/poly1305.c
index 9a61a85..f9bdf2c 100644
--- a/library/poly1305.c
+++ b/library/poly1305.c
@@ -293,12 +293,17 @@
     size_t queue_free_len;
     size_t nblocks;
 
-    if ( ( ctx == NULL ) || ( input == NULL ) )
+    if ( ctx == NULL )
     {
         return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA );
     }
+    else if ( ( ilen > 0U ) && ( input == NULL ) )
+    {
+        /* input pointer is allowed to be NULL only if ilen == 0 */
+        return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA );
+    }
 
-    if ( ctx->queue_len > 0U )
+    if ( ( remaining > 0U ) && ( ctx->queue_len > 0U ) )
     {
         queue_free_len = ( POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len );
 
