Changeset 237415 in webkit
- Timestamp:
- Oct 25, 2018 8:55:35 AM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r237410 r237415 1 2018-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 1 16 2018-10-25 Zan Dobersek <zdobersek@igalia.com> 2 17 -
trunk/Source/WebKit/Shared/soup/WebCoreArgumentCodersSoup.cpp
r237380 r237415 52 52 void ArgumentCoder<CertificateInfo>::encode(Encoder& encoder, const CertificateInfo& certificateInfo) 53 53 { 54 if (!certificateInfo.certificate()) { 54 auto* certificate = certificateInfo.certificate(); 55 if (!certificate) { 55 56 encoder << 0; 56 57 return; 57 58 } 58 59 59 GTlsCertificate* certificate = certificateInfo.certificate();60 60 Vector<GRefPtr<GByteArray>> certificatesDataList; 61 do{61 for (; certificate; certificate = g_tls_certificate_get_issuer(certificate)) { 62 62 GByteArray* certificateData = nullptr; 63 63 g_object_get(G_OBJECT(certificate), "certificate", &certificateData, nullptr); 64 64 65 if (!certificateData) 65 if (!certificateData) { 66 certificatesDataList.clear(); 66 67 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 } 72 72 73 73 encoder << static_cast<uint32_t>(certificatesDataList.size()); … … 78 78 // Encode starting from the root certificate. 79 79 for (size_t i = certificatesDataList.size(); i > 0; --i) { 80 auto& certificate = certificatesDataList[i - 1];80 GByteArray* certificate = certificatesDataList[i - 1].get(); 81 81 encoder.encodeVariableLengthByteArray(IPC::DataReference(certificate->data, certificate->len)); 82 82 } … … 101 101 return false; 102 102 103 G RefPtr<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())); 105 105 106 106 certificate = adoptGRef(G_TLS_CERTIFICATE(g_initable_new( 107 certificateType, nullptr, nullptr, "certificate", certificate Data.get(), "issuer", certificate.get(), nullptr)));107 certificateType, nullptr, nullptr, "certificate", certificateBytes.get(), "issuer", certificate.get(), nullptr))); 108 108 } 109 109
Note: See TracChangeset
for help on using the changeset viewer.