<..snip..>
On 2/12/2026 12:43 PM, Zhuoying Cai wrote:
void s390_ipl_create_cert_store(S390IPLCertificateStore *cert_store)
+{
+ GPtrArray *cert_path_builder;
+ Error *err = NULL;
+
+ /* If cert store is already populated, then no work to do */
+ if (cert_store->count) {
+ return;
+ }
+
+ cert_path_builder = get_cert_paths(&err);
+ if (cert_path_builder == NULL) {
+ error_report_err(err);
+ exit(1);
+ }
+
+ if (cert_path_builder->len == 0) {
+ g_ptr_array_free(cert_path_builder, TRUE);
+ return;
+ }
+
+ if (cert_path_builder->len > MAX_CERTIFICATES - 1) {
I think we are off by 1 here and it should be cert_path_builder->len >
MAX_CERTIFICATES. With this fixed
Reviewed-by: Farhan Ali<[email protected]>
+ error_report("Cert store exceeds maximum of %d certificates",
MAX_CERTIFICATES);
+ g_ptr_array_free(cert_path_builder, TRUE);
+ exit(1);
+ }
+
+ cert_store->largest_cert_size = 0;
+ cert_store->total_bytes = 0;
+
+ for (int i = 0; i < cert_path_builder->len; i++) {
+ g_autofree S390IPLCertificate *cert = init_cert(
+ (char *)
cert_path_builder->pdata[i],
+ &err);
+ if (!cert) {
+ error_report_err(err);
+ g_ptr_array_free(cert_path_builder, TRUE);
+ exit(1);
+ }
+
+ update_cert_store(cert_store, cert);
+ }
+
+ g_ptr_array_free(cert_path_builder, TRUE);
+}