mirror of
https://git.proxmox.com/git/fwupd
synced 2025-07-26 04:46:55 +00:00
Be more defensive when remotes are missing required keys
Fixes half of https://github.com/fwupd/fwupd/issues/2223
This commit is contained in:
parent
890dd12d70
commit
c5710d91bd
@ -1846,26 +1846,41 @@ fu_util_get_history (FuUtilPrivate *priv, gchar **values, GError **error)
|
|||||||
static gboolean
|
static gboolean
|
||||||
fu_util_refresh_remote (FuUtilPrivate *priv, FwupdRemote *remote, GError **error)
|
fu_util_refresh_remote (FuUtilPrivate *priv, FwupdRemote *remote, GError **error)
|
||||||
{
|
{
|
||||||
|
const gchar *metadata_uri = NULL;
|
||||||
g_autofree gchar *fn_raw = NULL;
|
g_autofree gchar *fn_raw = NULL;
|
||||||
g_autofree gchar *fn_sig = NULL;
|
g_autofree gchar *fn_sig = NULL;
|
||||||
g_autoptr(GBytes) bytes_raw = NULL;
|
g_autoptr(GBytes) bytes_raw = NULL;
|
||||||
g_autoptr(GBytes) bytes_sig = NULL;
|
g_autoptr(GBytes) bytes_sig = NULL;
|
||||||
|
|
||||||
/* payload */
|
/* payload */
|
||||||
fn_raw = fu_util_get_user_cache_path (fwupd_remote_get_metadata_uri (remote));
|
metadata_uri = fwupd_remote_get_metadata_uri (remote);
|
||||||
|
if (metadata_uri == NULL) {
|
||||||
|
g_set_error_literal (error,
|
||||||
|
FWUPD_ERROR,
|
||||||
|
FWUPD_ERROR_NOTHING_TO_DO,
|
||||||
|
"no metadata URI available");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
fn_raw = fu_util_get_user_cache_path (metadata_uri);
|
||||||
if (!fu_common_mkdir_parent (fn_raw, error))
|
if (!fu_common_mkdir_parent (fn_raw, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!fu_util_download_out_of_process (fwupd_remote_get_metadata_uri (remote),
|
if (!fu_util_download_out_of_process (metadata_uri, fn_raw, error))
|
||||||
fn_raw, error))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
bytes_raw = fu_common_get_contents_bytes (fn_raw, error);
|
bytes_raw = fu_common_get_contents_bytes (fn_raw, error);
|
||||||
if (bytes_raw == NULL)
|
if (bytes_raw == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* signature */
|
/* signature */
|
||||||
fn_sig = fu_util_get_user_cache_path (fwupd_remote_get_metadata_uri_sig (remote));
|
metadata_uri = fwupd_remote_get_metadata_uri_sig (remote);
|
||||||
if (!fu_util_download_out_of_process (fwupd_remote_get_metadata_uri_sig (remote),
|
if (metadata_uri == NULL) {
|
||||||
fn_sig, error))
|
g_set_error_literal (error,
|
||||||
|
FWUPD_ERROR,
|
||||||
|
FWUPD_ERROR_NOTHING_TO_DO,
|
||||||
|
"no metadata signature URI available");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
fn_sig = fu_util_get_user_cache_path (metadata_uri);
|
||||||
|
if (!fu_util_download_out_of_process (metadata_uri, fn_sig, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
bytes_sig = fu_common_get_contents_bytes (fn_sig, error);
|
bytes_sig = fu_common_get_contents_bytes (fn_sig, error);
|
||||||
if (bytes_sig == NULL)
|
if (bytes_sig == NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user