From f4952f040bf61ea856cdcb9cdf8dbb02ff3a6f1e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 14:55:02 -0800 Subject: progs/xdemos: Prevent possible string overflow. --- progs/xdemos/glxheads.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'progs') diff --git a/progs/xdemos/glxheads.c b/progs/xdemos/glxheads.c index b1a63d3d50..be77ad6342 100644 --- a/progs/xdemos/glxheads.c +++ b/progs/xdemos/glxheads.c @@ -145,14 +145,40 @@ AddHead(const char *displayName) /* save the info for this head */ { struct head *h = &Heads[NumHeads]; + const char * tmp; + + if (strlen(displayName) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "displayName string length overflow"); + return NULL; + } strcpy(h->DisplayName, displayName); + h->Dpy = dpy; h->Win = win; h->Context = ctx; h->Angle = 0.0; - strcpy(h->Version, (char *) glGetString(GL_VERSION)); + + tmp = (char *) glGetString(GL_VERSION); + if (strlen(tmp) + 1 > sizeof(h->Version)) { + Error(displayName, "GL_VERSION string length overflow"); + return NULL; + } + strcpy(h->Version, tmp); + + tmp = (char *) glGetString(GL_VENDOR); + if (strlen(tmp) + 1 > sizeof(h->Vendor)) { + Error(displayName, "GL_VENDOR string length overflow"); + return NULL; + } strcpy(h->Vendor, (char *) glGetString(GL_VENDOR)); + + tmp = (char *) glGetString(GL_RENDERER); + if (strlen(tmp) + 1 > sizeof(h->Renderer)) { + Error(displayName, "GL_RENDERER string length overflow"); + return NULL; + } strcpy(h->Renderer, (char *) glGetString(GL_RENDERER)); + NumHeads++; return &Heads[NumHeads-1]; } -- cgit v1.2.3 From c1dad22d7159569b978fdfcb87e4a718041b7d07 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 15:25:42 -0800 Subject: progs/glsl: Prevent possible string overflow. --- progs/glsl/shtest.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'progs') diff --git a/progs/glsl/shtest.c b/progs/glsl/shtest.c index e9800c307f..7b1917be1c 100644 --- a/progs/glsl/shtest.c +++ b/progs/glsl/shtest.c @@ -549,6 +549,10 @@ ReadConfigFile(const char *filename, struct config_file *conf) type = TypeFromName(typeName); + if (strlen(name) + 1 > sizeof(conf->uniforms[conf->num_uniforms].name)) { + fprintf(stderr, "string overflow\n"); + exit(1); + } strcpy(conf->uniforms[conf->num_uniforms].name, name); conf->uniforms[conf->num_uniforms].value[0] = v1; conf->uniforms[conf->num_uniforms].value[1] = v2; -- cgit v1.2.3 From 96a4e4552dab2dc0e741de40be0184a1e94515ef Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 15:33:13 -0800 Subject: progs/xdemos: Use temporary variables. This was missed from the previous commit to glxheads.c. --- progs/xdemos/glxheads.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'progs') diff --git a/progs/xdemos/glxheads.c b/progs/xdemos/glxheads.c index be77ad6342..edae0a3ef7 100644 --- a/progs/xdemos/glxheads.c +++ b/progs/xdemos/glxheads.c @@ -170,14 +170,14 @@ AddHead(const char *displayName) Error(displayName, "GL_VENDOR string length overflow"); return NULL; } - strcpy(h->Vendor, (char *) glGetString(GL_VENDOR)); + strcpy(h->Vendor, tmp); tmp = (char *) glGetString(GL_RENDERER); if (strlen(tmp) + 1 > sizeof(h->Renderer)) { Error(displayName, "GL_RENDERER string length overflow"); return NULL; } - strcpy(h->Renderer, (char *) glGetString(GL_RENDERER)); + strcpy(h->Renderer, tmp); NumHeads++; return &Heads[NumHeads-1]; -- cgit v1.2.3 From 4c45810d575c53f3e829809cb4d27e35739a2a69 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 15:35:18 -0800 Subject: progs/xdemos: Remove comma at end of enumerator list. --- progs/xdemos/glsync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'progs') diff --git a/progs/xdemos/glsync.c b/progs/xdemos/glsync.c index da87306cf2..9d4b0f1ce2 100644 --- a/progs/xdemos/glsync.c +++ b/progs/xdemos/glsync.c @@ -89,7 +89,7 @@ static char optstr[] = "w:h:s:v"; enum sync_type { none = 0, sgi_video_sync, - buffer_swap, + buffer_swap }; static void usage(char *name) -- cgit v1.2.3 From 25ffd7627828d5a6d1858e0fd5f2a4b796c72be8 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 18:08:17 -0800 Subject: progs/xdemos: Check for string overflow. --- progs/xdemos/sharedtex_mt.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'progs') diff --git a/progs/xdemos/sharedtex_mt.c b/progs/xdemos/sharedtex_mt.c index f924448cc4..a90903adec 100644 --- a/progs/xdemos/sharedtex_mt.c +++ b/progs/xdemos/sharedtex_mt.c @@ -174,6 +174,10 @@ AddWindow(Display *dpy, const char *displayName, int xpos, int ypos, { static int id = 0; struct window *h = &Windows[NumWindows]; + if (strlen(displayName) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "string overflow"); + return NULL; + } strcpy(h->DisplayName, displayName); h->Dpy = dpy; h->Win = win; -- cgit v1.2.3 From 45ac10fe6a9c01aec9b7245f9a5621402842f466 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 18:18:49 -0800 Subject: progs/xdemos: Check for string overflow. --- progs/xdemos/manywin.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'progs') diff --git a/progs/xdemos/manywin.c b/progs/xdemos/manywin.c index ee357f32a4..3b0810b2e5 100644 --- a/progs/xdemos/manywin.c +++ b/progs/xdemos/manywin.c @@ -177,14 +177,40 @@ AddHead(const char *displayName, const char *name) /* save the info for this head */ { struct head *h = &Heads[NumHeads]; + const char * tmp; + + if (strlen(name) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "name string overflow"); + return NULL; + } strcpy(h->DisplayName, name); + h->Dpy = dpy; h->Win = win; h->Context = ctx; h->Angle = 0.0; - strcpy(h->Version, (char *) glGetString(GL_VERSION)); - strcpy(h->Vendor, (char *) glGetString(GL_VENDOR)); - strcpy(h->Renderer, (char *) glGetString(GL_RENDERER)); + + tmp = (char *) glGetString(GL_VERSION); + if (strlen(tmp) + 1 > sizeof(h->Version)) { + Error(displayName, "GL_VERSION string overflow"); + return NULL; + } + strcpy(h->Version, tmp); + + tmp = (char *) glGetString(GL_VENDOR); + if (strlen(tmp) + 1 > sizeof(h->Vendor)) { + Error(displayName, "GL_VENDOR string overflow"); + return NULL; + } + strcpy(h->Vendor, tmp); + + tmp = (char *) glGetString(GL_RENDERER); + if (strlen(tmp) + 1 > sizeof(h->Renderer)) { + Error(displayName, "GL_RENDERER string overflow"); + return NULL; + } + strcpy(h->Renderer, tmp); + NumHeads++; return &Heads[NumHeads-1]; } -- cgit v1.2.3 From d42467687e9de756aa3e4bca5e55f69391af3065 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Wed, 6 Jan 2010 21:39:44 -0800 Subject: progs/demos: Assert that input to malloc is valid. --- progs/demos/fire.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'progs') diff --git a/progs/demos/fire.c b/progs/demos/fire.c index dd70f6141d..f30b893dbf 100644 --- a/progs/demos/fire.c +++ b/progs/demos/fire.c @@ -6,6 +6,7 @@ * Humanware s.r.l. */ +#include #include #include #include @@ -759,6 +760,7 @@ main(int ac, char **av) glFogfv(GL_FOG_COLOR, fogcolor); glFogf(GL_FOG_DENSITY, 0.1); + assert(np > 0); p = (part *) malloc(sizeof(part) * np); for (i = 0; i < np; i++) -- cgit v1.2.3 From 2b7a4b2c0e9b18ed985b0eda34723d53bc2a305b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 7 Jan 2010 08:22:37 -0700 Subject: progs/fp: remove invalid tri-inv.c test INV is not a valid instruction. --- progs/fp/Makefile | 1 - progs/fp/SConscript | 1 - progs/fp/tri-inv.c | 111 ---------------------------------------------------- 3 files changed, 113 deletions(-) delete mode 100644 progs/fp/tri-inv.c (limited to 'progs') diff --git a/progs/fp/Makefile b/progs/fp/Makefile index d77cd32b4d..681928cf26 100755 --- a/progs/fp/Makefile +++ b/progs/fp/Makefile @@ -17,7 +17,6 @@ SOURCES = \ tri-depth2.c \ tri-depthwrite.c \ tri-depthwrite2.c \ - tri-inv.c \ tri-param.c \ fp-tri.c diff --git a/progs/fp/SConscript b/progs/fp/SConscript index a78318542c..69614e1a9e 100644 --- a/progs/fp/SConscript +++ b/progs/fp/SConscript @@ -17,7 +17,6 @@ progs = [ 'tri-depth2', 'tri-depthwrite', 'tri-depthwrite2', - 'tri-inv', 'tri-param', 'tri-tex', 'point-position', diff --git a/progs/fp/tri-inv.c b/progs/fp/tri-inv.c deleted file mode 100644 index 7e490fa61c..0000000000 --- a/progs/fp/tri-inv.c +++ /dev/null @@ -1,111 +0,0 @@ - -#include -#include -#include -#include -#include - - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "INV result.color, fragment.color; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} -- cgit v1.2.3