1. 06 Dec, 2021 1 commit
  2. 09 Sep, 2021 1 commit
  3. 18 Sep, 2020 1 commit
  4. 05 Nov, 2019 1 commit
    • config_entries: micro-optimize storage of multivars · b7dcea04
      Multivars are configuration entries that have many values for the same
      name; we can thus micro-optimize this case by just retaining the name of
      the first configuration entry and freeing all the others, letting them
      point to the string of the first entry.
      
      The attached test case is an extreme example that demonstrates this. It
      contains a section name that is approximately 500kB in size with 20.000
      entries "a=b". Without the optimization, this would require at least
      20000*500kB bytes, which is around 10GB. With this patch, it only
      requires 500kB+20000*1B=20500kB.
      
      The obvious culprit here is the section header, which we repeatedly
      include in each of the configuration entry's names. This makes it very
      easier for an adversary to provide a small configuration file that
      disproportionally blows up in memory during processing and is thus a
      feasible way for a denial-of-service attack. Unfortunately, we cannot
      fix the root cause by e.g. having a separate "section" field that may
      easily be deduplicated due to the `git_config_entry` structure being
      part of our public API. So this micro-optimization is the best we can do
      for now.
      Patrick Steinhardt committed
  5. 14 Aug, 2018 1 commit
  6. 21 Apr, 2015 2 commits
  7. 04 Oct, 2014 1 commit
  8. 14 Nov, 2013 1 commit
  9. 02 May, 2012 1 commit
  10. 25 Apr, 2012 1 commit
  11. 16 Apr, 2012 1 commit
  12. 31 Mar, 2012 1 commit
  13. 17 Feb, 2012 2 commits
  14. 01 Oct, 2011 1 commit
  15. 22 Sep, 2011 1 commit
  16. 05 Jul, 2011 2 commits
  17. 17 Jun, 2011 2 commits
  18. 14 Jun, 2011 1 commit
  19. 31 May, 2011 3 commits
  20. 19 Apr, 2011 1 commit
  21. 11 Apr, 2011 1 commit
  22. 04 Apr, 2011 2 commits