Index: /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c	(revision 33044)
+++ /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c	(revision 33045)
@@ -163,5 +163,5 @@
 
     if (length) *length=*pLocal;
-    crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
+    crMemcpy(infoLog, &pLocal[1], (bufSize >= pLocal[0]) ? pLocal[0] : bufSize);
     crFree(pLocal);
 }
@@ -185,5 +185,5 @@
 
     if (length) *length=*pLocal;
-    crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
+    crMemcpy(infoLog, &pLocal[1], (bufSize >= pLocal[0]) ? pLocal[0] : bufSize);
     crFree(pLocal);
 }
@@ -207,5 +207,5 @@
 
     if (length) *length=*pLocal;
-    crMemcpy(source, &pLocal[1], (*pLocal)+1);
-    crFree(pLocal);
-}
+    crMemcpy(source, &pLocal[1], (bufSize >= pLocal[0]) ? pLocal[0] : bufSize);
+    crFree(pLocal);
+}
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c	(revision 33044)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c	(revision 33045)
@@ -144,5 +144,5 @@
     }
     cr_server.head_spu->dispatch_table.GetShaderInfoLog(crStateGetShaderHWID(shader), bufSize, pLocal, (char*)&pLocal[1]);
-    crServerReturnValue(pLocal, (*pLocal)+1+sizeof(GLsizei));
+    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
     crFree(pLocal);
 }
@@ -159,5 +159,5 @@
     }
     cr_server.head_spu->dispatch_table.GetProgramInfoLog(crStateGetProgramHWID(program), bufSize, pLocal, (char*)&pLocal[1]);
-    crServerReturnValue(pLocal, (*pLocal)+1+sizeof(GLsizei));
+    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
     crFree(pLocal);
 }
@@ -174,5 +174,5 @@
     }
     cr_server.head_spu->dispatch_table.GetShaderSource(crStateGetShaderHWID(shader), bufSize, pLocal, (char*)&pLocal[1]);
-    crServerReturnValue(pLocal, (*pLocal)+1+sizeof(GLsizei));
+    crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
     crFree(pLocal);
 }
@@ -280,3 +280,39 @@
 }
 
+void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterfvARB( GLhandleARB obj, GLenum pname, GLfloat * params )
+{
+    GLfloat local_params[1];
+    GLuint hwid = crStateGetProgramHWID(obj);
+    (void) params;
+
+    if (!hwid)
+    {
+        hwid = crStateGetShaderHWID(obj);
+        if (!hwid)
+        {
+            crWarning("Unknown object %i, in crServerDispatchGetObjectParameterfvARB", obj);
+        }
+    }
+
+    cr_server.head_spu->dispatch_table.GetObjectParameterfvARB( hwid, pname, local_params );
+    crServerReturnValue( &(local_params[0]), 1*sizeof(GLfloat) );
+}
+
+void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterivARB( GLhandleARB obj, GLenum pname, GLint * params )
+{
+    GLint local_params[1];
+    GLuint hwid = crStateGetProgramHWID(obj);
+    if (!hwid)
+    {
+        hwid = crStateGetShaderHWID(obj);
+        if (!hwid)
+        {
+            crWarning("Unknown object %i, in crServerDispatchGetObjectParameterivARB", obj);
+        }
+    }
+
+    (void) params;
+    cr_server.head_spu->dispatch_table.GetObjectParameterivARB( hwid, pname, local_params );
+    crServerReturnValue( &(local_params[0]), 1*sizeof(GLint) );
+}
 #endif /* #ifdef CR_OPENGL_VERSION_2_0 */
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special	(revision 33044)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special	(revision 33045)
@@ -243,2 +243,4 @@
 GetUniformLocation
 CopyTexSubImage2D
+GetObjectParameterivARB
+GetObjectParameterfvARB
