1. 08 Feb, 2023 1 commit
  2. 13 Jan, 2023 1 commit
  3. 02 Dec, 2022 1 commit
    • Alex Henrie's avatar
      rpcrt4/tests: Don't use an array of pointers in test_conf_complex_struct. · e09c93de
      Alex Henrie authored
      An array of pointers isn't conformant on 64-bit and will overrun the
      destination buffer when unmarshalling. Since the purpose of this
      function is to test a conformant FC_BOGUS_STRUCT, use one that is
      conformant on both 32-bit and 64-bit.
      
      The revised test coincidentally reveals that there is a problem with the
      padding or alignment after a marshalled 16-bit enum, which will need to
      be addressed separately.
      Co-authored-by: 's avatarZebediah Figura <z.figura12@gmail.com>
      e09c93de
  4. 07 Nov, 2022 1 commit
  5. 20 Oct, 2022 1 commit
  6. 11 Oct, 2022 2 commits
    • Kevin Puetz's avatar
      rpcrt4: Add a refcount owned by MIDL_STUB_MESSAGE. · a7be4256
      Kevin Puetz authored
      In cases where this could have been use-after-free, exceptions were
      caught/hidden by RpcTryFinally, but still lead to leaks since
      NdrProxyFreeBuffer wasn't able to call IRPCChannelBuffer::FreeBuffer.
      
      StdProxy_GetChannel() now AddRef() on its return value (used to set
      __proxy_frame::_StubMsg::pRpcChannelBuffer), and NdrProxyFreeBuffer()
      calls the corresponding Release() and clears the now-weak pointer.
      This makes the behavior of these function match the observed test
      results, and fixes the crash/leak when a proxy is released mid-Invoke.
      a7be4256
    • Kevin Puetz's avatar
      rpcrt4/tests: Add tests for lifetime of IRpcChannelBuffer. · 59f39b32
      Kevin Puetz authored
      It's possible for a proxy to be released during the middle of an Invoke.
      E.g. a specific case where this happened was a single-shot event sink
      which, upon receiving the event it was waiting for, would immediately
      call DispEventUnadvise. This removed the proxy pointing to that sink
      from the connection point's list of subscribers and released the last
      refcount on the proxy itself.
      
      Therefore, all state used to complete an RPC call must be on the stack;
      once NdrProxySendReceive pumps STA messages and permits reentrancy,
      the proxy cannot be accessed or relied on to own anything.
      
      Add test showing MIDL_STUB_MESSAGE::pRpcChannelBuffer owns a refcount
      (to ensure it can read [out] parameters from the channel)
      59f39b32
  7. 18 Jul, 2022 2 commits
  8. 04 Mar, 2022 1 commit
  9. 31 Jan, 2022 1 commit
  10. 27 Jan, 2022 1 commit
  11. 03 Dec, 2021 1 commit
  12. 13 Sep, 2021 1 commit
  13. 16 Dec, 2020 1 commit
  14. 02 Dec, 2020 1 commit
  15. 30 Nov, 2020 1 commit
  16. 14 Aug, 2020 1 commit
  17. 10 Aug, 2020 1 commit
  18. 24 Jul, 2020 1 commit
  19. 08 Jun, 2020 2 commits
  20. 01 Jun, 2020 1 commit
  21. 17 Mar, 2020 2 commits
  22. 13 Mar, 2020 1 commit
  23. 15 Jan, 2020 1 commit
  24. 30 Oct, 2019 1 commit
  25. 07 Mar, 2019 1 commit
  26. 30 Jan, 2019 1 commit
  27. 25 Jan, 2019 1 commit
  28. 24 Jan, 2019 1 commit
  29. 23 Jan, 2019 1 commit
  30. 16 Jan, 2019 1 commit
  31. 10 Dec, 2018 1 commit
  32. 20 Nov, 2018 2 commits
  33. 02 Nov, 2018 1 commit
  34. 01 Nov, 2018 1 commit
  35. 30 Oct, 2018 1 commit