The API for downloading a summary file can legitimately return NULL for
the summary file contents when it returns TRUE (success). This indicates
an error 404 ā the summary file was not found.
Two call sites were not handling that correctly, which was causing later
assertion failures.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
Closes: #1061
Closes: #1065
Approved by: cgwalters
}
/* Download the summary file from @remote, and return the bytes of the file in
- * @out_summary_bytes. */
+ * @out_summary_bytes. This will return %TRUE and set @out_summary_bytes to %NULL
+ * if the summary file does not exist. */
static gboolean
fetch_summary_from_remote (OstreeRepo *repo,
OstreeRemote *remote,
error))
return FALSE;
+ if (summary_bytes == NULL)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+ "No summary file found on server");
+ return FALSE;
+ }
+
return get_refs_and_checksums_from_summary (summary_bytes, supported_ref_to_checksum, error);
}
g_clear_error (&error);
continue;
}
+ else if (summary_bytes == NULL)
+ {
+ g_debug ("%s: Failed to download summary for result ā%sā. Ignoring. %s",
+ G_STRFUNC, result->remote->name,
+ "No summary file exists on server");
+ g_clear_pointer (&g_ptr_array_index (results, i), (GDestroyNotify) ostree_repo_finder_result_free);
+ continue;
+ }
/* Check the metadata in the summary file, especially whether it contains
* all the @refs we are interested in. */