Title: [293693] trunk/Source/_javascript_Core
Revision
293693
Author
ysuz...@apple.com
Date
2022-05-02 15:58:40 -0700 (Mon, 02 May 2022)

Log Message

[JSC] Fix ASan crash due to CString ownership
https://bugs.webkit.org/show_bug.cgi?id=239981

Reviewed by Darin Adler and Mark Lam.

We need to ensure that CString is kept alive.

* runtime/JSDateMath.cpp:
(JSC::DateCache::timeZoneDisplayName):

Canonical link: https://commits.webkit.org/250189@main

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (293692 => 293693)


--- trunk/Source/_javascript_Core/ChangeLog	2022-05-02 22:49:23 UTC (rev 293692)
+++ trunk/Source/_javascript_Core/ChangeLog	2022-05-02 22:58:40 UTC (rev 293693)
@@ -1,3 +1,15 @@
+2022-05-02  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] Fix ASan crash due to CString ownership
+        https://bugs.webkit.org/show_bug.cgi?id=239981
+
+        Reviewed by Darin Adler and Mark Lam.
+
+        We need to ensure that CString is kept alive.
+
+        * runtime/JSDateMath.cpp:
+        (JSC::DateCache::timeZoneDisplayName):
+
 2022-05-02  Justin Michaud  <justin_mich...@apple.com>
 
         Add option to JSC shell to wait for a USR2 signal before exiting to aid in collection of vmmaps

Modified: trunk/Source/_javascript_Core/runtime/JSDateMath.cpp (293692 => 293693)


--- trunk/Source/_javascript_Core/runtime/JSDateMath.cpp	2022-05-02 22:49:23 UTC (rev 293692)
+++ trunk/Source/_javascript_Core/runtime/JSDateMath.cpp	2022-05-02 22:58:40 UTC (rev 293693)
@@ -370,17 +370,16 @@
     if (m_timeZoneStandardDisplayNameCache.isNull()) {
 #if HAVE(ICU_C_TIMEZONE_API)
         auto& timeZoneCache = *this->timeZoneCache();
-        String languageString = defaultLanguage();
-        const char* language = languageString.utf8().data();
+        CString language = defaultLanguage().utf8();
         {
             Vector<UChar, 32> standardDisplayNameBuffer;
-            auto status = callBufferProducingFunction(ucal_getTimeZoneDisplayName, timeZoneCache.m_calendar.get(), UCAL_STANDARD, language, standardDisplayNameBuffer);
+            auto status = callBufferProducingFunction(ucal_getTimeZoneDisplayName, timeZoneCache.m_calendar.get(), UCAL_STANDARD, language.data(), standardDisplayNameBuffer);
             if (U_SUCCESS(status))
                 m_timeZoneStandardDisplayNameCache = String::adopt(WTFMove(standardDisplayNameBuffer));
         }
         {
             Vector<UChar, 32> dstDisplayNameBuffer;
-            auto status = callBufferProducingFunction(ucal_getTimeZoneDisplayName, timeZoneCache.m_calendar.get(), UCAL_DST, language, dstDisplayNameBuffer);
+            auto status = callBufferProducingFunction(ucal_getTimeZoneDisplayName, timeZoneCache.m_calendar.get(), UCAL_DST, language.data(), dstDisplayNameBuffer);
             if (U_SUCCESS(status))
                 m_timeZoneDSTDisplayNameCache = String::adopt(WTFMove(dstDisplayNameBuffer));
         }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to