Add BrotliDecode filter support for PDF 2.0 streams [pdfium : main]

0 views
Skip to first unread message

Aryan Krishnan (Gerrit)

unread,
Jun 23, 2026, 1:10:51 AM (2 days ago) Jun 23
to Tom Sepez, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Lei Zhang, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
Attention needed from Andy Phan, Lei Zhang and Tom Sepez

Aryan Krishnan voted and added 2 comments

Votes added by Aryan Krishnan

Commit-Queue+1

2 comments

File core/fxcodec/brotli/brotli_decoder.h
Line 16, Patchset 57:struct BrotliDecoderStateDeleter {
Lei Zhang . resolved

This can live inside brotli_decoder.cpp in an anonymous namespace. No need to expose it in the header if it is not used anywhere else.

Aryan Krishnan

Done

File core/fxcodec/brotli/brotli_decoder.cpp
Line 27, Patchset 50: if (estimated_decode_size > kMaxDecodeBytes) {
Lei Zhang . resolved

This means some data stream out there is larger than 64 MB uncompressed, but this code will refuse to decompress it. This does not feel right.

I'm fine with doing Brotli decompression in chunks in the line 45 loop below, but I'm concerned that the overall function cannot handle larger outputs.

Aryan Krishnan

There are 3 main choices here:
1. Fail on large sizes
Pros: A lower risk of having a PDF that just zip bombs your ram
Cons: A lot of PDFs fail to decode which can be confusing for users.

2. Return a half decoded stream
Pros: We don't return a failure state and at least give a bit of the stream.
Cons: Unpredictable Behaviour and the PDF may not render.

3. Removing the check
Pros: Supports more PDFs without failing
Cons: Floods the RAM and may cause a DOS.

For these large buffers, even just at the max size of 64MB, a full decode takes ~1.7 seconds on my system (Might differ system to system but just giving an example). Allowing exponential growth to support such streams will cause a 10GiB sample for instance to take 270s to decode.

AFAIK FlateDecode also imposes a limit of 1GiB to protect against this case.

I would say at this point option 1 seems like the best choice considering that while some PDFs fail, if the limit is set right the vast majority should render fine.

Aryan Krishnan

Resolving for now, reopen if we should discuss a bit more or if there is a choice 4 I missed somewhere.

Lei Zhang

If the Flate code uses a 1 GB limit, then why not use that here as well? Why set the limit so low?

Aryan Krishnan

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Andy Phan
  • Lei Zhang
  • Tom Sepez
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: pdfium
Gerrit-Branch: main
Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
Gerrit-Change-Number: 148850
Gerrit-PatchSet: 59
Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
Gerrit-CC: Rick Byers <rby...@chromium.org>
Gerrit-Attention: Lei Zhang <the...@chromium.org>
Gerrit-Attention: Tom Sepez <tse...@chromium.org>
Gerrit-Attention: Andy Phan <andy...@chromium.org>
Gerrit-Comment-Date: Tue, 23 Jun 2026 05:10:45 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
Comment-In-Reply-To: Aryan Krishnan <aryankr...@gmail.com>
unsatisfied_requirement
open
diffy

Lei Zhang (Gerrit)

unread,
Jun 23, 2026, 1:32:56 PM (2 days ago) Jun 23
to Aryan Krishnan, Tom Sepez, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Lei Zhang, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
Attention needed from Andy Phan, Aryan Krishnan and Tom Sepez

Lei Zhang added 4 comments

Commit Message
Line 9, Patchset 59 (Latest):This CL Adds brotli_decoder.cpp/.h implementing BrotliDecoder::Decode()
Lei Zhang . unresolved

Same comment as other CLs. Not sure why Regular words in the middle of a sentence gets capitalized.

File core/fxcodec/brotli/brotli_decoder.cpp
Line 22, Patchset 59 (Latest):} // namespace
Lei Zhang . unresolved

Put a newline above, and balance it out with a newline after line 16.

Line 24, Patchset 59 (Latest):void BrotliDecoderStateDeleter::operator()(
Lei Zhang . unresolved

Just merge this with line 20.

Line 27, Patchset 50: if (estimated_decode_size > kMaxDecodeBytes) {
Lei Zhang . unresolved

This means some data stream out there is larger than 64 MB uncompressed, but this code will refuse to decompress it. This does not feel right.

I'm fine with doing Brotli decompression in chunks in the line 45 loop below, but I'm concerned that the overall function cannot handle larger outputs.

Aryan Krishnan

There are 3 main choices here:
1. Fail on large sizes
Pros: A lower risk of having a PDF that just zip bombs your ram
Cons: A lot of PDFs fail to decode which can be confusing for users.

2. Return a half decoded stream
Pros: We don't return a failure state and at least give a bit of the stream.
Cons: Unpredictable Behaviour and the PDF may not render.

3. Removing the check
Pros: Supports more PDFs without failing
Cons: Floods the RAM and may cause a DOS.

For these large buffers, even just at the max size of 64MB, a full decode takes ~1.7 seconds on my system (Might differ system to system but just giving an example). Allowing exponential growth to support such streams will cause a 10GiB sample for instance to take 270s to decode.

AFAIK FlateDecode also imposes a limit of 1GiB to protect against this case.

I would say at this point option 1 seems like the best choice considering that while some PDFs fail, if the limit is set right the vast majority should render fine.

Aryan Krishnan

Resolving for now, reopen if we should discuss a bit more or if there is a choice 4 I missed somewhere.

Lei Zhang

If the Flate code uses a 1 GB limit, then why not use that here as well? Why set the limit so low?

Aryan Krishnan

Done

Lei Zhang

Not yet.

Open in Gerrit

Related details

Attention is currently required from:
  • Andy Phan
  • Aryan Krishnan
  • Tom Sepez
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: pdfium
    Gerrit-Branch: main
    Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
    Gerrit-Change-Number: 148850
    Gerrit-PatchSet: 59
    Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
    Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
    Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
    Gerrit-CC: Rick Byers <rby...@chromium.org>
    Gerrit-Attention: Tom Sepez <tse...@chromium.org>
    Gerrit-Attention: Aryan Krishnan <aryankr...@gmail.com>
    Gerrit-Attention: Andy Phan <andy...@chromium.org>
    Gerrit-Comment-Date: Tue, 23 Jun 2026 17:32:51 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Aryan Krishnan (Gerrit)

    unread,
    Jun 23, 2026, 1:44:52 PM (2 days ago) Jun 23
    to Tom Sepez, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Lei Zhang, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
    Attention needed from Andy Phan, Lei Zhang and Tom Sepez

    Aryan Krishnan added 4 comments

    Commit Message
    Line 9, Patchset 59:This CL Adds brotli_decoder.cpp/.h implementing BrotliDecoder::Decode()
    Lei Zhang . resolved

    Same comment as other CLs. Not sure why Regular words in the middle of a sentence gets capitalized.

    Aryan Krishnan

    Done

    File core/fxcodec/brotli/brotli_decoder.cpp
    Line 22, Patchset 59:} // namespace
    Lei Zhang . resolved

    Put a newline above, and balance it out with a newline after line 16.

    Aryan Krishnan

    Done

    Line 24, Patchset 59:void BrotliDecoderStateDeleter::operator()(
    Lei Zhang . resolved

    Just merge this with line 20.

    Aryan Krishnan

    Done

    Line 27, Patchset 50: if (estimated_decode_size > kMaxDecodeBytes) {
    Lei Zhang . resolved

    This means some data stream out there is larger than 64 MB uncompressed, but this code will refuse to decompress it. This does not feel right.

    I'm fine with doing Brotli decompression in chunks in the line 45 loop below, but I'm concerned that the overall function cannot handle larger outputs.

    Aryan Krishnan

    There are 3 main choices here:
    1. Fail on large sizes
    Pros: A lower risk of having a PDF that just zip bombs your ram
    Cons: A lot of PDFs fail to decode which can be confusing for users.

    2. Return a half decoded stream
    Pros: We don't return a failure state and at least give a bit of the stream.
    Cons: Unpredictable Behaviour and the PDF may not render.

    3. Removing the check
    Pros: Supports more PDFs without failing
    Cons: Floods the RAM and may cause a DOS.

    For these large buffers, even just at the max size of 64MB, a full decode takes ~1.7 seconds on my system (Might differ system to system but just giving an example). Allowing exponential growth to support such streams will cause a 10GiB sample for instance to take 270s to decode.

    AFAIK FlateDecode also imposes a limit of 1GiB to protect against this case.

    I would say at this point option 1 seems like the best choice considering that while some PDFs fail, if the limit is set right the vast majority should render fine.

    Aryan Krishnan

    Resolving for now, reopen if we should discuss a bit more or if there is a choice 4 I missed somewhere.

    Lei Zhang

    If the Flate code uses a 1 GB limit, then why not use that here as well? Why set the limit so low?

    Aryan Krishnan

    Done

    Lei Zhang

    Not yet.

    Aryan Krishnan

    Oops - maybe it got overwritten by some other patchset I uploaded without pulling all gerrit commits. Should be done now.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Andy Phan
    • Lei Zhang
    • Tom Sepez
    Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: pdfium
      Gerrit-Branch: main
      Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
      Gerrit-Change-Number: 148850
      Gerrit-PatchSet: 62
      Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
      Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
      Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
      Gerrit-CC: Rick Byers <rby...@chromium.org>
      Gerrit-Attention: Lei Zhang <the...@chromium.org>
      Gerrit-Attention: Tom Sepez <tse...@chromium.org>
      Gerrit-Attention: Andy Phan <andy...@chromium.org>
      Gerrit-Comment-Date: Tue, 23 Jun 2026 17:44:45 +0000
      unsatisfied_requirement
      open
      diffy

      Lei Zhang (Gerrit)

      unread,
      Jun 23, 2026, 1:51:34 PM (2 days ago) Jun 23
      to Aryan Krishnan, Lei Zhang, Tom Sepez, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
      Attention needed from Andy Phan, Aryan Krishnan and Tom Sepez

      Lei Zhang voted

      Code-Review+1
      Commit-Queue+1
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andy Phan
      • Aryan Krishnan
      • Tom Sepez
      Submit Requirements:
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: pdfium
      Gerrit-Branch: main
      Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
      Gerrit-Change-Number: 148850
      Gerrit-PatchSet: 62
      Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
      Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
      Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
      Gerrit-CC: Rick Byers <rby...@chromium.org>
      Gerrit-Attention: Tom Sepez <tse...@chromium.org>
      Gerrit-Attention: Aryan Krishnan <aryankr...@gmail.com>
      Gerrit-Attention: Andy Phan <andy...@chromium.org>
      Gerrit-Comment-Date: Tue, 23 Jun 2026 17:51:27 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Tom Sepez (Gerrit)

      unread,
      Jun 24, 2026, 2:50:57 PM (13 hours ago) Jun 24
      to Aryan Krishnan, Lei Zhang, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
      Attention needed from Andy Phan and Aryan Krishnan

      Tom Sepez voted and added 2 comments

      Votes added by Tom Sepez

      Code-Review+1

      2 comments

      File core/fxcodec/brotli/brotli_decoder.cpp
      Line 51, Patchset 62 (Latest): size_t available_out = decoded_buffer.size() - total_out;
      Tom Sepez . unresolved

      if we make auto next_out = span(decoded_buffer).subspan(total_out), we can avoid the decoded_buffer.size() - total_out calculation, instead relying on next_out.size(). That way, the two can't get out of sync with each other in the future.

      Line 59, Patchset 62 (Latest): std::min(static_cast<uint32_t>(decoded_buffer.size()) * 2,
      static_cast<uint32_t>(kMaxDecodeBytes));
      Tom Sepez . unresolved

      nit: can avoid std::min here as we checked N/2 above.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andy Phan
      • Aryan Krishnan
      Submit Requirements:
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: pdfium
        Gerrit-Branch: main
        Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
        Gerrit-Change-Number: 148850
        Gerrit-PatchSet: 62
        Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
        Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
        Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
        Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
        Gerrit-CC: Rick Byers <rby...@chromium.org>
        Gerrit-Attention: Aryan Krishnan <aryankr...@gmail.com>
        Gerrit-Attention: Andy Phan <andy...@chromium.org>
        Gerrit-Comment-Date: Wed, 24 Jun 2026 18:50:51 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Aryan Krishnan (Gerrit)

        unread,
        Jun 24, 2026, 2:57:18 PM (13 hours ago) Jun 24
        to Tom Sepez, Lei Zhang, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
        Attention needed from Andy Phan, Lei Zhang and Tom Sepez

        Aryan Krishnan voted and added 2 comments

        Votes added by Aryan Krishnan

        Commit-Queue+1

        2 comments

        File core/fxcodec/brotli/brotli_decoder.cpp
        Line 51, Patchset 62: size_t available_out = decoded_buffer.size() - total_out;
        Tom Sepez . resolved

        if we make auto next_out = span(decoded_buffer).subspan(total_out), we can avoid the decoded_buffer.size() - total_out calculation, instead relying on next_out.size(). That way, the two can't get out of sync with each other in the future.

        Aryan Krishnan

        Yeah checks out! Thanks!

        Line 59, Patchset 62: std::min(static_cast<uint32_t>(decoded_buffer.size()) * 2,
        static_cast<uint32_t>(kMaxDecodeBytes));
        Tom Sepez . resolved

        nit: can avoid std::min here as we checked N/2 above.

        Aryan Krishnan

        Done (Although differently to the edit).

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Andy Phan
        • Lei Zhang
        • Tom Sepez
        Submit Requirements:
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: pdfium
        Gerrit-Branch: main
        Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
        Gerrit-Change-Number: 148850
        Gerrit-PatchSet: 63
        Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
        Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
        Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
        Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
        Gerrit-CC: Rick Byers <rby...@chromium.org>
        Gerrit-Attention: Lei Zhang <the...@chromium.org>
        Gerrit-Attention: Tom Sepez <tse...@chromium.org>
        Gerrit-Attention: Andy Phan <andy...@chromium.org>
        Gerrit-Comment-Date: Wed, 24 Jun 2026 18:57:09 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        Comment-In-Reply-To: Tom Sepez <tse...@chromium.org>
        unsatisfied_requirement
        open
        diffy

        Lei Zhang (Gerrit)

        unread,
        Jun 24, 2026, 3:59:47 PM (12 hours ago) Jun 24
        to Aryan Krishnan, Tom Sepez, Lei Zhang, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
        Attention needed from Andy Phan, Aryan Krishnan and Tom Sepez

        Lei Zhang added 1 comment

        File core/fxcodec/brotli/brotli_decoder.cpp
        Line 59, Patchset 62: std::min(static_cast<uint32_t>(decoded_buffer.size()) * 2,
        static_cast<uint32_t>(kMaxDecodeBytes));
        Tom Sepez . unresolved

        nit: can avoid std::min here as we checked N/2 above.

        Aryan Krishnan

        Done (Although differently to the edit).

        Lei Zhang

        After this, can just combine with the resize() call. Also no need to static_cast().

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Andy Phan
        • Aryan Krishnan
        • Tom Sepez
        Submit Requirements:
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: pdfium
          Gerrit-Branch: main
          Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
          Gerrit-Change-Number: 148850
          Gerrit-PatchSet: 63
          Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
          Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
          Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
          Gerrit-CC: Rick Byers <rby...@chromium.org>
          Gerrit-Attention: Tom Sepez <tse...@chromium.org>
          Gerrit-Attention: Aryan Krishnan <aryankr...@gmail.com>
          Gerrit-Attention: Andy Phan <andy...@chromium.org>
          Gerrit-Comment-Date: Wed, 24 Jun 2026 19:59:43 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Tom Sepez <tse...@chromium.org>
          Comment-In-Reply-To: Aryan Krishnan <aryankr...@gmail.com>
          unsatisfied_requirement
          open
          diffy

          Aryan Krishnan (Gerrit)

          unread,
          1:30 AM (3 hours ago) 1:30 AM
          to Tom Sepez, Lei Zhang, pdfium...@luci-project-accounts.iam.gserviceaccount.com, Andy Phan, Rick Byers, pdfium-...@googlegroups.com, ba...@chromium.org
          Attention needed from Andy Phan, Lei Zhang and Tom Sepez

          Aryan Krishnan voted and added 1 comment

          Votes added by Aryan Krishnan

          Commit-Queue+1

          1 comment

          File core/fxcodec/brotli/brotli_decoder.cpp
          Line 59, Patchset 62: std::min(static_cast<uint32_t>(decoded_buffer.size()) * 2,
          static_cast<uint32_t>(kMaxDecodeBytes));
          Tom Sepez . resolved

          nit: can avoid std::min here as we checked N/2 above.

          Aryan Krishnan

          Done (Although differently to the edit).

          Lei Zhang

          After this, can just combine with the resize() call. Also no need to static_cast().

          Aryan Krishnan

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Phan
          • Lei Zhang
          • Tom Sepez
          Submit Requirements:
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: pdfium
            Gerrit-Branch: main
            Gerrit-Change-Id: I6f1532d14fd547bc8e9efdb4d6c5d99605109133
            Gerrit-Change-Number: 148850
            Gerrit-PatchSet: 64
            Gerrit-Owner: Aryan Krishnan <aryankr...@gmail.com>
            Gerrit-Reviewer: Andy Phan <andy...@chromium.org>
            Gerrit-Reviewer: Aryan Krishnan <aryankr...@gmail.com>
            Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
            Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
            Gerrit-CC: Rick Byers <rby...@chromium.org>
            Gerrit-Attention: Lei Zhang <the...@chromium.org>
            Gerrit-Attention: Tom Sepez <tse...@chromium.org>
            Gerrit-Attention: Andy Phan <andy...@chromium.org>
            Gerrit-Comment-Date: Thu, 25 Jun 2026 05:30:27 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: Yes
            Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
            unsatisfied_requirement
            open
            diffy
            Reply all
            Reply to author
            Forward
            0 new messages