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

« back to all changes in this revision

Viewing changes to src/mesa/state_tracker/st_glsl_to_tgsi.cpp

  • 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:
357
357
 
358
358
   /** List of immediate_storage */
359
359
   exec_list immediates;
360
 
   int num_immediates;
 
360
   unsigned num_immediates;
361
361
 
362
362
   /** List of function_entry */
363
363
   exec_list function_signatures;
2815
2815
   indirect_addr_temps = false;
2816
2816
   indirect_addr_consts = false;
2817
2817
   mem_ctx = ralloc_context(NULL);
 
2818
   ctx = NULL;
 
2819
   prog = NULL;
 
2820
   shader_program = NULL;
 
2821
   options = NULL;
2818
2822
}
2819
2823
 
2820
2824
glsl_to_tgsi_visitor::~glsl_to_tgsi_visitor()
3645
3649
   v->indirect_addr_temps = original->indirect_addr_temps;
3646
3650
   v->indirect_addr_consts = original->indirect_addr_consts;
3647
3651
   memcpy(&v->immediates, &original->immediates, sizeof(v->immediates));
 
3652
   v->num_immediates = original->num_immediates;
3648
3653
 
3649
3654
   /*
3650
3655
    * Get initial pixel color from the texture.
3775
3780
   v->indirect_addr_temps = original->indirect_addr_temps;
3776
3781
   v->indirect_addr_consts = original->indirect_addr_consts;
3777
3782
   memcpy(&v->immediates, &original->immediates, sizeof(v->immediates));
 
3783
   v->num_immediates = original->num_immediates;
3778
3784
 
3779
3785
   /* TEX tmp0, fragment.texcoord[0], texture[0], 2D; */
3780
3786
   coord = st_src_reg(PROGRAM_INPUT, FRAG_ATTRIB_TEX0, glsl_type::vec2_type);
4679
4685
   i = 0;
4680
4686
   foreach_iter(exec_list_iterator, iter, program->immediates) {
4681
4687
      immediate_storage *imm = (immediate_storage *)iter.get();
 
4688
      assert(i < program->num_immediates);
4682
4689
      t->immediates[i++] = emit_immediate(t, imm->values, imm->type, imm->size);
4683
4690
   }
 
4691
   assert(i == program->num_immediates);
4684
4692
 
4685
4693
   /* texture samplers */
4686
4694
   for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {