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 ")",