@@ -731,9 +731,17 @@ static void vmsvga_fifo_run(struct vmsvga_state_s *s)
* arguments so we can avoid FIFO desync
*/
case SVGA_CMD_RECT_ROP_FILL: /* deprecated */
+ len -= 1;
+ if (len < 0) {
+ goto rewind;
+ }
args = 6;
goto badcmd;
case SVGA_CMD_RECT_ROP_COPY: /* deprecated */
+ len -= 1;
+ if (len < 0) {
+ goto rewind;
+ }
args = 7;
goto badcmd;
case SVGA_CMD_DEFINE_ALPHA_CURSOR:
@@ -761,6 +769,10 @@ static void vmsvga_fifo_run(struct vmsvga_state_s *s)
args = 12;
goto badcmd;
case SVGA_CMD_FENCE:
+ len -= 1;
+ if (len < 0) {
+ goto rewind;
+ }
args = 1;
goto badcmd;