~ubuntu-branches/ubuntu/precise/mesa/precise-security

« back to all changes in this revision

Viewing changes to src/mesa/vbo/vbo_attrib_tmp.h

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers, Steve Beattie
  • Date: 2012-10-19 09:04:04 UTC
  • mfrom: (163.1.4 precise-proposed)
  • Revision ID: package-import@ubuntu.com-20121019090404-5zbjpsp6knv7zl3b
Tags: 8.0.4-0ubuntu0.2
[ Steve Beattie ]
* SECURITY UPDATE: samplers array overflow (LP: #1046933)
  - debian/patches/50-CVE-2012-2864.patch: ensure that more than
    MAX_SAMPLERS are not used
  - CVE-2012-2864

Show diffs side-by-side

added added

removed removed

Lines of Context:
792
792
}
793
793
 
794
794
 
795
 
 
796
 
#define MAT( ATTR, N, face, params )                    \
797
 
do {                                                    \
798
 
   if (face != GL_BACK)                                 \
799
 
      MAT_ATTR( ATTR, N, params ); /* front */          \
800
 
   if (face != GL_FRONT)                                \
801
 
      MAT_ATTR( ATTR + 1, N, params ); /* back */       \
802
 
} while (0)
803
 
 
804
 
 
805
 
/* Colormaterial conflicts are dealt with later.
806
 
 */
807
 
static void GLAPIENTRY
808
 
TAG(Materialfv)(GLenum face, GLenum pname,
809
 
                 const GLfloat * params)
810
 
{
811
 
   GET_CURRENT_CONTEXT(ctx);
812
 
 
813
 
   if (face != GL_FRONT && face != GL_BACK && face != GL_FRONT_AND_BACK) {
814
 
      _mesa_error(ctx, GL_INVALID_ENUM, "glMaterial(invalid face)");
815
 
      return;
816
 
   }
817
 
 
818
 
   switch (pname) {
819
 
   case GL_EMISSION:
820
 
      MAT(VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params);
821
 
      break;
822
 
   case GL_AMBIENT:
823
 
      MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
824
 
      break;
825
 
   case GL_DIFFUSE:
826
 
      MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
827
 
      break;
828
 
   case GL_SPECULAR:
829
 
      MAT(VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params);
830
 
      break;
831
 
   case GL_SHININESS:
832
 
      if (*params < 0 || *params > ctx->Const.MaxShininess)
833
 
         _mesa_error(ctx, GL_INVALID_VALUE,
834
 
                     "glMaterial(invalid shininess: %f out range [0, %f])",
835
 
                     *params, ctx->Const.MaxShininess);
836
 
      else
837
 
         MAT(VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params);
838
 
      break;
839
 
   case GL_COLOR_INDEXES:
840
 
      MAT(VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params);
841
 
      break;
842
 
   case GL_AMBIENT_AND_DIFFUSE:
843
 
      MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
844
 
      MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
845
 
      break;
846
 
   default:
847
 
      ERROR(GL_INVALID_ENUM);
848
 
      return;
849
 
   }
850
 
}
851
 
 
852
795
static void GLAPIENTRY
853
796
TAG(VertexP2ui)(GLenum type, GLuint value)
854
797
{
1145
1088
#undef ATTR_UI
1146
1089
 
1147
1090
#undef MAT
1148
 
#undef MAT_ATTR