diff --git a/app/flatpak-builtins-build-bundle.c b/app/flatpak-builtins-build-bundle.c index 639e5fb3..5a5262db 100644 --- a/app/flatpak-builtins-build-bundle.c +++ b/app/flatpak-builtins-build-bundle.c @@ -924,8 +924,8 @@ flatpak_builtin_build_bundle (int argc, char **argv, GCancellable *cancellable, if (!flatpak_is_valid_name (name, &my_error)) return flatpak_fail (error, _("'%s' is not a valid name: %s"), name, my_error->message); - if (!flatpak_is_valid_branch (branch)) - return flatpak_fail (error, _("'%s' is not a valid branch name"), branch); + if (!flatpak_is_valid_branch (branch, &my_error)) + return flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, &my_error); if (opt_runtime) full_branch = flatpak_build_runtime_ref (name, branch, opt_arch); diff --git a/app/flatpak-builtins-build-export.c b/app/flatpak-builtins-build-export.c index 114bcc50..2024f552 100644 --- a/app/flatpak-builtins-build-export.c +++ b/app/flatpak-builtins-build-export.c @@ -499,6 +499,7 @@ flatpak_builtin_build_export (int argc, char **argv, GCancellable *cancellable, g_autoptr(OstreeMutableTree) files_mtree = NULL; g_autoptr(OstreeMutableTree) export_mtree = NULL; g_autoptr(GKeyFile) metakey = NULL; + g_autoptr(GError) my_error = NULL; gsize metadata_size; g_autofree char *subject = NULL; g_autofree char *body = NULL; @@ -526,9 +527,9 @@ flatpak_builtin_build_export (int argc, char **argv, GCancellable *cancellable, else branch = "master"; - if (!flatpak_is_valid_branch (branch)) + if (!flatpak_is_valid_branch (branch, &my_error)) { - flatpak_fail (error, _("'%s' is not a valid branch name"), branch); + flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); goto out; } diff --git a/app/flatpak-builtins-build-init.c b/app/flatpak-builtins-build-init.c index ca0115a1..7c678a78 100644 --- a/app/flatpak-builtins-build-init.c +++ b/app/flatpak-builtins-build-init.c @@ -100,8 +100,8 @@ flatpak_builtin_build_init (int argc, char **argv, GCancellable *cancellable, GE if (!flatpak_is_valid_name (sdk, &my_error)) return flatpak_fail (error, _("'%s' is not a valid sdk name: %s"), sdk, my_error->message); - if (!flatpak_is_valid_branch (branch)) - return flatpak_fail (error, _("'%s' is not a valid branch name"), branch); + if (!flatpak_is_valid_branch (branch, &my_error)) + return flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); runtime_ref = flatpak_build_untyped_ref (runtime, branch, opt_arch); sdk_ref = flatpak_build_untyped_ref (sdk, branch, opt_arch); diff --git a/app/flatpak-builtins-build-sign.c b/app/flatpak-builtins-build-sign.c index c61aa51e..3cbbeb71 100644 --- a/app/flatpak-builtins-build-sign.c +++ b/app/flatpak-builtins-build-sign.c @@ -83,8 +83,8 @@ flatpak_builtin_build_sign (int argc, char **argv, GCancellable *cancellable, GE if (!flatpak_is_valid_name (id, &my_error)) return flatpak_fail (error, _("'%s' is not a valid name: %s"), id, my_error->message); - if (!flatpak_is_valid_branch (branch)) - return flatpak_fail (error, _("'%s' is not a valid branch name"), branch); + if (!flatpak_is_valid_branch (branch, &my_error)) + return flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); if (opt_gpg_key_ids == NULL) return flatpak_fail (error, _("No gpg key ids specified")); diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index c0d93bd8..fd4942e6 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -4311,9 +4311,9 @@ find_matching_refs (GHashTable *refs, return NULL; } - if (opt_branch && !flatpak_is_valid_branch (opt_branch)) + if (opt_branch && !flatpak_is_valid_branch (opt_branch, &local_error)) { - flatpak_fail (error, "'%s' is not a valid branch name", opt_branch); + flatpak_fail (error, "'%s' is not a valid branch name: %s", opt_branch, local_error->message); return NULL; } diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 7b32bf27..306c6e86 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -527,6 +527,7 @@ is_valid_branch_character (gint c) /** flatpak_is_valid_branch: * @string: The string to check + * @error: return location for an error * * Checks if @string is a valid branch name. * @@ -540,7 +541,8 @@ is_valid_branch_character (gint c) * Since: 2.26 */ gboolean -flatpak_is_valid_branch (const char *string) +flatpak_is_valid_branch (const char *string, + GError **error) { guint len; gboolean ret; @@ -553,19 +555,31 @@ flatpak_is_valid_branch (const char *string) len = strlen (string); if (G_UNLIKELY (len == 0)) - goto out; + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Branch can't be empty"); + goto out; + } end = string + len; s = string; if (G_UNLIKELY (!is_valid_initial_branch_character (*s))) - goto out; + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Branch can't start with %c", *s); + goto out; + } s += 1; while (s != end) { if (G_UNLIKELY (!is_valid_branch_character (*s))) - goto out; + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Branch can't contain %c", *s); + goto out; + } s += 1; } @@ -607,9 +621,9 @@ flatpak_decompose_ref (const char *full_ref, return NULL; } - if (!flatpak_is_valid_branch (parts[3])) + if (!flatpak_is_valid_branch (parts[3], &local_error)) { - flatpak_fail (error, "Invalid branch %s", parts[3]); + flatpak_fail (error, "Invalid branch %s: %s", parts[3], local_error->message); return NULL; } @@ -654,8 +668,8 @@ flatpak_split_partial_ref_arg (char *partial_ref, branch = slash + 1; if (strlen (branch) > 0) { - if (!flatpak_is_valid_branch (branch)) - return flatpak_fail (error, "Invalid branch %s", branch); + if (!flatpak_is_valid_branch (branch, &local_error)) + return flatpak_fail (error, "Invalid branch %s: %s", branch, local_error->message); } else branch = NULL; @@ -686,9 +700,9 @@ flatpak_compose_ref (gboolean app, return NULL; } - if (branch && !flatpak_is_valid_branch (branch)) + if (branch && !flatpak_is_valid_branch (branch, &local_error)) { - flatpak_fail (error, "'%s' is not a valid branch name", branch); + flatpak_fail (error, "'%s' is not a valid branch name: %s", branch, local_error->message); return NULL; } diff --git a/common/flatpak-utils.h b/common/flatpak-utils.h index a06153be..7226d0a9 100644 --- a/common/flatpak-utils.h +++ b/common/flatpak-utils.h @@ -80,7 +80,8 @@ gboolean flatpak_has_name_prefix (const char *string, const char *name); gboolean flatpak_is_valid_name (const char *string, GError **error); -gboolean flatpak_is_valid_branch (const char *string); +gboolean flatpak_is_valid_branch (const char *string, + GError **error); char **flatpak_decompose_ref (const char *ref, GError **error);