Verified Commit 248a7e5f authored by Pier Angelo Vendrame's avatar Pier Angelo Vendrame 🎃
Browse files

Bug 42374: Check for spoof English in number conversions

Some of the code that converts numbers to strings for inputs uses ICU
functions to localize numbers, but it does not check for spoof English.

Also, not all functions where consistent in the conversion, so this
commit addresses also this.
parent cd181db2
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -52,11 +52,7 @@ nsresult NumericInputTypeBase::GetRangeOverflowMessage(nsAString& aMessage) {
  MOZ_ASSERT(!maximum.isNaN());

  nsAutoString maxStr;
  char buf[32];
  DebugOnly<bool> ok = maximum.toString(buf, ArrayLength(buf));
  maxStr.AssignASCII(buf);
  MOZ_ASSERT(ok, "buf not big enough");

  ConvertNumberToString(maximum, maxStr);
  return nsContentUtils::FormatMaybeLocalizedString(
      aMessage, nsContentUtils::eDOM_PROPERTIES,
      "FormValidationNumberRangeOverflow", mInputElement->OwnerDoc(), maxStr);
@@ -67,11 +63,7 @@ nsresult NumericInputTypeBase::GetRangeUnderflowMessage(nsAString& aMessage) {
  MOZ_ASSERT(!minimum.isNaN());

  nsAutoString minStr;
  char buf[32];
  DebugOnly<bool> ok = minimum.toString(buf, ArrayLength(buf));
  minStr.AssignASCII(buf);
  MOZ_ASSERT(ok, "buf not big enough");

  ConvertNumberToString(minimum, minStr);
  return nsContentUtils::FormatMaybeLocalizedString(
      aMessage, nsContentUtils::eDOM_PROPERTIES,
      "FormValidationNumberRangeUnderflow", mInputElement->OwnerDoc(), minStr);
+7 −0
Original line number Diff line number Diff line
@@ -49,6 +49,13 @@ void ICUUtils::LanguageTagIterForContent::GetNext(nsACString& aBCP47LangTag) {
    mCurrentFallbackIndex = 2;
    // Else take the app's locale:

    const bool spoofLocale = nsContentUtils::SpoofLocaleEnglish() &&
                             !mContent->OwnerDoc()->AllowsL10n();
    if (spoofLocale) {
      aBCP47LangTag.AssignLiteral("en-US");
      return;
    }

    nsAutoCString appLocale;
    LocaleService::GetInstance()->GetAppLocaleAsBCP47(aBCP47LangTag);
    return;