VirtualBox

Ignore:
Timestamp:
Apr 10, 2019 11:20:02 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
129932
Message:

GuestHost/OpenGL,HostServices/SharedOpenGL: Fixed parameter validation, bugref:9433

Location:
trunk/src/VBox/HostServices/SharedOpenGL
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_get.py

    r69390 r78076  
    127127        local_argname = 'local_%s' % lastParam[0]
    128128
    129         print('\t%s %s[%d];' % ( local_argtype, local_argname, max_components[func_name] ))
     129        print('\t%s %s[%d] = { 0 };' % ( local_argtype, local_argname, max_components[func_name] ))
    130130        print('\t(void) %s;' % lastParam[0])
    131131
     
    142142            print('\tcrServerReturnValue(&(%s[0]), %d*sizeof(%s));' % (local_argname, max_components[func_name], local_argtype ))
    143143        else:
    144             print('\tcrServerReturnValue(&(%s[0]), crStateHlpComponentsCount(pname)*sizeof(%s));' % (local_argname, local_argtype ))
     144            print('\tunsigned int cComponents = RT_MIN(crStateHlpComponentsCount(pname), RT_ELEMENTS(%s));' % local_argname)
     145            print('\tcrServerReturnValue(&(%s[0]), cComponents*sizeof(%s));' % (local_argname, local_argtype ))
    145146        print ('}\n')
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_texture.c

    r76787 r78076  
    176176        crStateGetTexEnvfv( target, pname, local_params );
    177177
    178     crServerReturnValue( &(local_params[0]), crStateHlpComponentsCount(pname)*sizeof (GLfloat) );
     178    size_t cComponents = RT_MIN(crStateHlpComponentsCount(pname), RT_ELEMENTS(local_params));
     179    crServerReturnValue( &(local_params[0]), cComponents*sizeof (GLfloat) );
    179180}
    180181
     
    188189        crStateGetTexEnviv( target, pname, local_params );
    189190
    190     crServerReturnValue( &(local_params[0]), crStateHlpComponentsCount(pname)*sizeof (GLint) );
     191    size_t cComponents = RT_MIN(crStateHlpComponentsCount(pname), RT_ELEMENTS(local_params));
     192    crServerReturnValue( &(local_params[0]), cComponents*sizeof (GLint) );
    191193}
    192194
  • trunk/src/VBox/HostServices/SharedOpenGL/unpacker/unpack.py

    r71487 r78076  
    170170    print("{")
    171171
     172    # Verify that the provided buffer length is what we expect.
     173    packet_length = apiutil.PacketLength( params )
     174    print("\tif(!DATA_POINTER_CHECK(%d))" % packet_length);
     175    print("\t{");
     176    print("\t\tcrError(\"crUnpack%s: parameters out of range\");" % func_name);
     177    print("\t\treturn;");
     178    print("\t}");
     179
    172180    vector_func = apiutil.VectorFunction(func_name)
    173181    if (vector_func and len(apiutil.Parameters(vector_func)) == 1):
     
    175183    else:
    176184        MakeNormalCall( return_type, func_name, params )
    177     packet_length = apiutil.PacketLength( params )
    178185    if packet_length == 0:
    179186        print("\tINCR_DATA_PTR_NO_ARGS( );")
     
    330337            print('static void crUnpackExtend%s(void)' % func_name)
    331338            print('{')
     339
     340            # Verify that the provided buffer length is what we expect.
     341            packet_length = apiutil.PacketLength( params )
     342            print("\tif(!DATA_POINTER_CHECK(%d))" % packet_length);
     343            print("\t{");
     344            print("\t\tcrError(\"crUnpack%s: parameters out of range\");" % func_name);
     345            print("\t\treturn;");
     346            print("\t}");
     347
    332348            MakeNormalCall( return_type, func_name, params, 8 )
    333349            print('}\n')
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette