widl: Increment the buffer offset by 8 for embedded pointers inside varying arrays in varying structures.

Rob Shearman robertshearman at gmail.com
Tue Jul 1 17:35:57 CDT 2008


The 8 bytes are for the variance and offset and are added just before
the array, as seen in the marshalling code in rpcrt4. No offset needs
to be added for non-varying structures since the buffer mark is set
after the conformance in marshalled or unmarshalled.
---
 tools/widl/typegen.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

Should fix the following Valgrind warning in dlls/rpcrt4/tests/rpc.c:
 Syscall param write(buf) points to uninitialised byte(s)
    at  (within /lib/ld-2.7.so)
    by  WriteFile (file.c:559)
    by  rpcrt4_conn_np_write (rpc_transport.c:404)
    by  rpcrt4_conn_write (rpc_binding.h:168)
    by  RPCRT4_SendWithAuth (rpc_message.c:533)
    by  RPCRT4_Send (rpc_message.c:675)
    by  I_RpcSend (rpc_message.c:1225)
    by  I_RpcSendReceive (rpc_message.c:1328)
    by  NdrSendReceive (ndr_clientserver.c:213)
    by  ept_insert (epm_c.c:108)
    by  RpcEpRegisterA (rpc_epmap.c:238)
    by  test_endpoint_mapper (rpc.c:699)
    by  func_rpc (rpc.c:736)
    by  run_test (test.h:449)
    by  main (test.h:498)
  Address 0x7f013c50 is 48 bytes inside a block of size 320 alloc'd
    at  notify_alloc (heap.c:191)
    by  RtlAllocateHeap (heap.c:1231)
    by  RPCRT4_SendWithAuth (rpc_message.c:492)
    by  RPCRT4_Send (rpc_message.c:675)
    by  I_RpcSend (rpc_message.c:1225)
    by  I_RpcSendReceive (rpc_message.c:1328)
    by  NdrSendReceive (ndr_clientserver.c:213)
    by  ept_insert (epm_c.c:108)
    by  RpcEpRegisterA (rpc_epmap.c:238)
    by  test_endpoint_mapper (rpc.c:699)
    by  func_rpc (rpc.c:736)
    by  run_test (test.h:449)
    by  main (test.h:498)
  Uninitialised value was created by a client request
    at  mark_block_uninitialized (heap.c:164)
    by  RtlAllocateHeap (heap.c:1239)
    by  I_RpcAllocate (rpcrt4_main.c:694)
    by  I_RpcGetBuffer (rpc_message.c:1070)
    by  NdrGetBuffer (ndr_clientserver.c:171)
    by  ept_insert (epm_c.c:86)
    by  RpcEpRegisterA (rpc_epmap.c:238)
    by  test_endpoint_mapper (rpc.c:699)
    by  func_rpc (rpc.c:736)
    by  run_test (test.h:449)
    by  main (test.h:498)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 67ddd2daf2bb972051d2ccb5da292b2ad5050376.diff
Type: text/x-patch
Size: 2278 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20080701/4eb3cdd6/attachment.bin 


More information about the wine-patches mailing list