Skip to content

Conversation

@maskit
Copy link
Member

@maskit maskit commented Feb 28, 2023

This partially reverts #8719. I think the memory leak is because of not calling the destructor of CryptoContextBase. Although use of new and delete makes the code easy to understand, we should avoid the memory allocation.

@maskit maskit added this to the 10.0.0 milestone Feb 28, 2023
@maskit maskit requested a review from bryancall February 28, 2023 22:08
@maskit maskit self-assigned this Feb 28, 2023

private:
CryptoContextBase *_base = nullptr;
static size_t constexpr OBJ_SIZE = 256;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought I may be able to calculate the minimal size but realized that it requires including header files for SHA256 and MD5.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would probably be good to have some test or debug logic that does calculate the minimum size.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AC_CHECK_SIZEOF? Then maybe we can do std::max. Try it if you are interested.

#if TS_ENABLE_FIPS == 0
case MD5:
_base = new MD5Context;
static_assert(OBJ_SIZE > sizeof(MD5Context));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change these to >=.

@maskit
Copy link
Member Author

maskit commented Mar 13, 2023

[approve ci autest]

@maskit maskit merged commit d07a6ac into apache:master Mar 13, 2023
cmcfarlen pushed a commit to cmcfarlen/trafficserver that referenced this pull request Jun 3, 2024
* Avoid memory allocation in CryptoHash

* Add static_assert to ensure _base is big enough

* Fix static_assert condition
cmcfarlen pushed a commit to cmcfarlen/trafficserver that referenced this pull request Jun 3, 2024
* commit 'c54a2e2b77151869ff014fbdc4c82cec0afcbb8c': (37 commits)
  Slight performance improvements before calling APIHooks::clear (apache#9480)
  libswoc: Update to 1.4.5 (apache#9522)
  CryptoContext: Clean up to avoid compiler problem. (apache#9521)
  Add TLSCertSwitchSupport (apache#9322)
  Add clang-format-tests to clang-format target (apache#9456)
  Adds the AR env variable to config.nice (apache#9515)
  Fix .asf.yaml (apache#9519)
  Hugepage config cleanup (apache#9479)
  Separate io_uring into a separate library. AIO in io_uring mode uses new io_uring lib. (apache#9462)
  Avoid memory allocation in CryptoHash (apache#9474)
  UnitParser: add unit parser support. (apache#9485)
  autest - Minor fix on the verifier_client test ext to allow setting only the http3 ports. (apache#9517)
  Remove support for port event polling (apache#9476)
  QUIC: Add support to configure UDP max payload limit. (apache#9486)
  Reduce the size of the APIHooks, eliminating enum gap (apache#9509)
  Add support for CMCD-Request header nor field to prefetch plugin (apache#9232)
  Eliminates padding from some common structs (apache#9481)
  Enable external file loading for sni.yaml. (apache#9501)
  Remove inactive include of IpMapConf.h (apache#9512)
  Cleanup: Remove RecModeT from the code. (apache#9487)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants