diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index bb1612fbf710056432066a4b6e48a903e607686a..99ae48d63f840ec67b7448cf7376b456fcee9bf8 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -70,6 +70,8 @@ int opus_decoder_get_size(int channels)
 {
    int silkDecSizeBytes, celtDecSizeBytes;
    int ret;
+   if (channels<1 || channels > 2)
+      return 0;
    ret = silk_Get_Decoder_Size( &silkDecSizeBytes );
    if(ret)
       return 0;
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index 6b4702da4fd628b85eb5dec709b0d2ca2ff308de..ef62b91857e09ed67c05e4d679806e80bf7b6abe 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -124,6 +124,8 @@ int opus_encoder_get_size(int channels)
 {
     int silkEncSizeBytes, celtEncSizeBytes;
     int ret;
+    if (channels<1 || channels > 2)
+        return 0;
     ret = silk_Get_Encoder_Size( &silkEncSizeBytes );
     if (ret)
         return 0;