--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -733,12 +733,12 @@ static int tiff_decode_tag(TiffContext *s)
         }
         break;
     case TIFF_ROWSPERSTRIP:
-        if (type == TIFF_LONG && value == UINT_MAX)
+        if (type == TIFF_LONG && value == UINT_MAX && s->avctx->height > 0) {
             value = s->avctx->height;
-        if (value < 1) {
-            av_log(s->avctx, AV_LOG_ERROR,
+        } else if (type == TIFF_LONG && value == UINT_MAX && s->avctx->height < 1) {
+            av_log(s->avctx, AV_LOG_WARNING,
                    "Incorrect value of rows per strip\n");
-            return -1;
+            value = s->height;
         }
         s->rps = value;
         break;
