diff --git a/src/channels.c b/src/channels.c
index c8a5d8b..60eb27c 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -628,6 +628,13 @@ SSH_PACKET_CALLBACK(channel_rcv_data)
             channel->local_window,
             channel->remote_window);
 
+    if (channel->flags & SSH_CHANNEL_FLAG_CLOSED_REMOTE) {
+        SSH_LOG(SSH_LOG_WARNING, "Received data on (remotely) closed channel");
+        ssh_set_error(session, SSH_FATAL, "Received data on (remotely) closed channel");
+        SSH_STRING_FREE(str);
+        return SSH_PACKET_USED;
+    }
+
     if (len > channel->local_window) {
         SSH_LOG(SSH_LOG_RARE,
                 "Data packet too big for our window(%" PRIu32 " vs %" PRIu32 ")",