Changeset 237415 in webkit


Ignore:
Timestamp:
Oct 25, 2018 8:55:35 AM (6 years ago)
Author:
Claudio Saavedra
Message:

[WPE][GTK] Follow-up fixes to the certificate coders
https://bugs.webkit.org/show_bug.cgi?id=190900

Reviewed by Michael Catanzaro.

Cleanup the GRefPtr mess I created earlier. Also we now bail out
if any certificate in the chain has no data instead of returning a
cropped chain.

  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<CertificateInfo>::encode):
(IPC::ArgumentCoder<CertificateInfo>::decode):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r237410 r237415  
     12018-10-25  Claudio Saavedra  <csaavedra@igalia.com>
     2
     3        [WPE][GTK] Follow-up fixes to the certificate coders
     4        https://bugs.webkit.org/show_bug.cgi?id=190900
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Cleanup the GRefPtr mess I created earlier. Also we now bail out
     9        if any certificate in the chain has no data instead of returning a
     10        cropped chain.
     11
     12        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
     13        (IPC::ArgumentCoder<CertificateInfo>::encode):
     14        (IPC::ArgumentCoder<CertificateInfo>::decode):
     15
    1162018-10-25  Zan Dobersek  <zdobersek@igalia.com>
    217
  • trunk/Source/WebKit/Shared/soup/WebCoreArgumentCodersSoup.cpp

    r237380 r237415  
    5252void ArgumentCoder<CertificateInfo>::encode(Encoder& encoder, const CertificateInfo& certificateInfo)
    5353{
    54     if (!certificateInfo.certificate()) {
     54    auto* certificate = certificateInfo.certificate();
     55    if (!certificate) {
    5556        encoder << 0;
    5657        return;
    5758    }
    5859
    59     GTlsCertificate* certificate = certificateInfo.certificate();
    6060    Vector<GRefPtr<GByteArray>> certificatesDataList;
    61     do {
     61    for (; certificate; certificate = g_tls_certificate_get_issuer(certificate)) {
    6262        GByteArray* certificateData = nullptr;
    6363        g_object_get(G_OBJECT(certificate), "certificate", &certificateData, nullptr);
    6464
    65         if (!certificateData)
     65        if (!certificateData) {
     66            certificatesDataList.clear();
    6667            break;
    67 
    68         certificatesDataList.append(certificateData);
    69 
    70         certificate = g_tls_certificate_get_issuer(certificate);
    71     } while (certificate);
     68        }
     69
     70        certificatesDataList.append(adoptGRef(certificateData));
     71    }
    7272
    7373    encoder << static_cast<uint32_t>(certificatesDataList.size());
     
    7878    // Encode starting from the root certificate.
    7979    for (size_t i = certificatesDataList.size(); i > 0; --i) {
    80         auto& certificate = certificatesDataList[i - 1];
     80        GByteArray* certificate = certificatesDataList[i - 1].get();
    8181        encoder.encodeVariableLengthByteArray(IPC::DataReference(certificate->data, certificate->len));
    8282    }
     
    101101            return false;
    102102
    103         GRefPtr<GByteArray> certificateData = g_byte_array_sized_new(certificateDataReference.size());
    104         certificateData = g_byte_array_append(certificateData.get(), certificateDataReference.data(), certificateDataReference.size());
     103        GByteArray* certificateData = g_byte_array_sized_new(certificateDataReference.size());
     104        GRefPtr<GByteArray> certificateBytes = adoptGRef(g_byte_array_append(certificateData, certificateDataReference.data(), certificateDataReference.size()));
    105105
    106106        certificate = adoptGRef(G_TLS_CERTIFICATE(g_initable_new(
    107             certificateType, nullptr, nullptr, "certificate", certificateData.get(), "issuer", certificate.get(), nullptr)));
     107            certificateType, nullptr, nullptr, "certificate", certificateBytes.get(), "issuer", certificate.get(), nullptr)));
    108108    }
    109109
Note: See TracChangeset for help on using the changeset viewer.