Index: /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_program.c
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_program.c	(revision 79678)
+++ /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_program.c	(revision 79679)
@@ -400,4 +400,11 @@
     }
 
+    if (len > _1M)
+    {
+        crStateError(pState, __LINE__, __FILE__, GL_INVALID_VALUE,
+                                 "glLoadProgramNV(len > 1MB)");
+        return;
+    }
+
     prog = GetProgram(p, target, id);
 
@@ -425,4 +432,5 @@
             crStateError(pState, __LINE__, __FILE__, GL_INVALID_VALUE, "glLoadProgramNV");
             crDebug("program = (%s)\n",program);
+            crFree(progCopy);
             return;
     }
