001-fix-macos-vasnprintf.patch 1.4 KB

12345678910111213141516171819202122232425
  1. --- a/lib/vasnprintf.c
  2. +++ b/lib/vasnprintf.c
  3. @@ -4858,7 +4858,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
  4. #endif
  5. *fbp = dp->conversion;
  6. #if USE_SNPRINTF
  7. -# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
  8. +# if ! (((__GLIBC__ > 2 \
  9. + || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) \
  10. + && !defined __UCLIBC__) \
  11. + || (defined __APPLE__ && defined __MACH__) \
  12. + || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
  13. fbp[1] = '%';
  14. fbp[2] = 'n';
  15. fbp[3] = '\0';
  16. @@ -4872,6 +4876,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
  17. in format strings in writable memory may crash the program
  18. (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
  19. in this situation. */
  20. + /* macOS 10.13 High Sierra behaves like glibc with
  21. + _FORTIFY_SOURCE=2, and older macOS releases
  22. + presumably do not need %n. */
  23. /* On native Windows systems (such as mingw), we can avoid using
  24. %n because:
  25. - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,