Type: Bug
Severity: medium
Component: VirtualBox OSE
Host: Ubuntu 64

In file src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_typelib.c:

  #417       annotation_len = strlen(annotation_format) + 
strlen(state->basename) +
  418            strlen(timestr);
  419        for (i = 0; i < HEADER(state)->num_interfaces; i++) {
  [...]
  425        }
  426
  !427       annotate_val = (char *) malloc(annotation_len);

In line 417 the size of annotation_len is calculated and later (line 427) used 
to allocate memory for a string, but there is not enough memory reserved for 
the terminating 0 character.
In line 418 there should be a "+ 1" added to the calculation.


In file out/linux.amd64/debug/obj/VBoxOGLgen/state_current_gen.c (creation 
source unknown):

 1789                if (v != NULL) {
 !1790                       COPY_4V(c->vertexAttrib[VERT_ATTRIB_TEX0 + i], 
texCoord_default);
 !1791                       convert(&(c->vertexAttrib[VERT_ATTRIB_TEX0 + 
i][0]), v);
 !1792                       DIRTY(cb->vertexAttrib[VERT_ATTRIB_TEX0 + i], 
nbitID);
 1793                        DIRTY(cb->dirty, nbitID);
 1794                }

with i defined as
 1706        for (i = 0 ; i < CR_MAX_TEXTURE_UNITS ; i++)

will cause the array CRCurrentState->vertexAttrib of size 16 to exceed the 
array bounds with index VERT_ATTRIB_TEX0 + i, as VERT_ATTRIB_TEX0 is 8 and 
CR_MAX_TEXTURE_UNITS is 16, causing i to loop from 0 to 15.

_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to