From 7483a98769ca2ec27dd199ba31d4b9baca0cea68 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 28 Oct 2020 09:12:25 +0100 Subject: [PATCH] utils: Allow passing sizes to more utils These now take (optional) string length args: flatpak_id_has_subref_suffix() flatpak_levenshtein_distance() flatpak_is_valid_name() flatpak_is_valid_branch() --- app/flatpak-builtins-build-bundle.c | 4 +- app/flatpak-builtins-build-commit-from.c | 4 +- app/flatpak-builtins-build-export.c | 4 +- app/flatpak-builtins-build-finish.c | 2 +- app/flatpak-builtins-build-init.c | 4 +- app/flatpak-builtins-build-sign.c | 4 +- app/flatpak-builtins-install.c | 4 +- app/flatpak-builtins-list.c | 2 +- app/flatpak-builtins-override.c | 2 +- app/flatpak-builtins-remote-ls.c | 2 +- app/flatpak-builtins-uninstall.c | 4 +- app/flatpak-builtins-utils.c | 2 +- app/flatpak-complete.c | 2 +- app/flatpak-main.c | 4 +- common/flatpak-dir.c | 8 +-- common/flatpak-utils-private.h | 9 ++- common/flatpak-utils.c | 80 ++++++++++++++++++------ tests/testcommon.c | 40 ++++++------ 18 files changed, 116 insertions(+), 65 deletions(-) diff --git a/app/flatpak-builtins-build-bundle.c b/app/flatpak-builtins-build-bundle.c index ea832686..d5a89626 100644 --- a/app/flatpak-builtins-build-bundle.c +++ b/app/flatpak-builtins-build-bundle.c @@ -653,10 +653,10 @@ flatpak_builtin_build_bundle (int argc, char **argv, GCancellable *cancellable, full_branch = g_strdup (name); else { - if (!flatpak_is_valid_name (name, &my_error)) + if (!flatpak_is_valid_name (name, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid name: %s"), name, my_error->message); - if (!flatpak_is_valid_branch (branch, &my_error)) + if (!flatpak_is_valid_branch (branch, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); if (opt_runtime) diff --git a/app/flatpak-builtins-build-commit-from.c b/app/flatpak-builtins-build-commit-from.c index 90931753..69e1c13e 100644 --- a/app/flatpak-builtins-build-commit-from.c +++ b/app/flatpak-builtins-build-commit-from.c @@ -316,10 +316,10 @@ flatpak_builtin_build_commit_from (int argc, char **argv, GCancellable *cancella *rebase_new = 0; rebase_new++; - if (!flatpak_is_valid_name (rebase_old, error)) + if (!flatpak_is_valid_name (rebase_old, -1, error)) return glnx_prefix_error (error, _("Invalid name %s in --end-of-life-rebase"), rebase_old); - if (!flatpak_is_valid_name (rebase_new, error)) + if (!flatpak_is_valid_name (rebase_new, -1, error)) return glnx_prefix_error (error, _("Invalid name %s in --end-of-life-rebase"), rebase_new); opt_endoflife_rebase_new[i] = rebase_new; diff --git a/app/flatpak-builtins-build-export.c b/app/flatpak-builtins-build-export.c index e78034fb..1ac83a88 100644 --- a/app/flatpak-builtins-build-export.c +++ b/app/flatpak-builtins-build-export.c @@ -820,7 +820,7 @@ flatpak_builtin_build_export (int argc, char **argv, GCancellable *cancellable, goto out; } - if (!flatpak_is_valid_branch (branch, &my_error)) + if (!flatpak_is_valid_branch (branch, -1, &my_error)) { flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); goto out; @@ -1028,7 +1028,7 @@ flatpak_builtin_build_export (int argc, char **argv, GCancellable *cancellable, g_auto(GStrv) full_ref_parts = g_strsplit (full_branch, "/", 0); g_autofree char *rebased_ref = g_build_filename (full_ref_parts[0], opt_endoflife_rebase, full_ref_parts[2], full_ref_parts[3], NULL); - if (!flatpak_is_valid_name (opt_endoflife_rebase, error)) + if (!flatpak_is_valid_name (opt_endoflife_rebase, -1, error)) return glnx_prefix_error (error, "Invalid name in --end-of-life-rebase"); g_variant_dict_insert_value (&metadata_dict, OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE, diff --git a/app/flatpak-builtins-build-finish.c b/app/flatpak-builtins-build-finish.c index cd23f1b0..f076228a 100644 --- a/app/flatpak-builtins-build-finish.c +++ b/app/flatpak-builtins-build-finish.c @@ -588,7 +588,7 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime, goto out; } - if (!flatpak_is_valid_name (elements[0], error)) + if (!flatpak_is_valid_name (elements[0], -1, error)) { glnx_prefix_error (error, _("Invalid extension name %s"), elements[0]); goto out; diff --git a/app/flatpak-builtins-build-init.c b/app/flatpak-builtins-build-init.c index 465aa8b1..e09ae0c1 100644 --- a/app/flatpak-builtins-build-init.c +++ b/app/flatpak-builtins-build-init.c @@ -232,7 +232,7 @@ flatpak_builtin_build_init (int argc, char **argv, GCancellable *cancellable, GE else is_app = TRUE; - if (!flatpak_is_valid_name (app_id, &my_error)) + if (!flatpak_is_valid_name (app_id, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid application name: %s"), app_id, my_error->message); @@ -449,7 +449,7 @@ flatpak_builtin_build_init (int argc, char **argv, GCancellable *cancellable, GE if (g_strv_length (elements) < 2) return flatpak_fail (error, _("Too few elements in --extension argument %s, format should be NAME=VAR[=VALUE]"), opt_extensions[i]); - if (!flatpak_is_valid_name (elements[0], error)) + if (!flatpak_is_valid_name (elements[0], -1, error)) return glnx_prefix_error (error, _("Invalid extension name %s"), elements[0]); groupname = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION, diff --git a/app/flatpak-builtins-build-sign.c b/app/flatpak-builtins-build-sign.c index e135eb9a..f4065cd2 100644 --- a/app/flatpak-builtins-build-sign.c +++ b/app/flatpak-builtins-build-sign.c @@ -83,10 +83,10 @@ flatpak_builtin_build_sign (int argc, char **argv, GCancellable *cancellable, GE else branch = "master"; - if (id != NULL && !flatpak_is_valid_name (id, &my_error)) + if (id != NULL && !flatpak_is_valid_name (id, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid name: %s"), id, my_error->message); - if (!flatpak_is_valid_branch (branch, &my_error)) + if (!flatpak_is_valid_branch (branch, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid branch name: %s"), branch, my_error->message); if (opt_gpg_key_ids == NULL) diff --git a/app/flatpak-builtins-install.c b/app/flatpak-builtins-install.c index 8665d663..8585ef06 100644 --- a/app/flatpak-builtins-install.c +++ b/app/flatpak-builtins-install.c @@ -459,7 +459,7 @@ flatpak_builtin_install (int argc, char **argv, GCancellable *cancellable, GErro } /* Backwards compat for old "REMOTE NAME [BRANCH]" argument version */ - if (argc == 4 && flatpak_is_valid_name (argv[2], NULL) && looks_like_branch (argv[3])) + if (argc == 4 && flatpak_is_valid_name (argv[2], -1, NULL) && looks_like_branch (argv[3])) { target_branch = g_strdup (argv[3]); n_prefs = 1; @@ -501,7 +501,7 @@ flatpak_builtin_install (int argc, char **argv, GCancellable *cancellable, GErro &matched_kinds, &id, &arch, &branch); /* We used _novalidate so that the id can be partial, but we can still validate the branch */ - if (branch != NULL && !flatpak_is_valid_branch (branch, &local_error)) + if (branch != NULL && !flatpak_is_valid_branch (branch, -1, &local_error)) return flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid branch %s: %s"), branch, local_error->message); if (opt_no_pull) diff --git a/app/flatpak-builtins-list.c b/app/flatpak-builtins-list.c index d5930dd8..eecb05a3 100644 --- a/app/flatpak-builtins-list.c +++ b/app/flatpak-builtins-list.c @@ -241,7 +241,7 @@ print_table_for_refs (gboolean print_apps, } if (!opt_all && strcmp (parts[0], "runtime") == 0 && - flatpak_id_has_subref_suffix (parts[1])) + flatpak_id_has_subref_suffix (parts[1], -1)) { g_autofree char *prefix_partial_ref = NULL; char *last_dot = strrchr (parts[1], '.'); diff --git a/app/flatpak-builtins-override.c b/app/flatpak-builtins-override.c index 09faf096..b789d4bd 100644 --- a/app/flatpak-builtins-override.c +++ b/app/flatpak-builtins-override.c @@ -75,7 +75,7 @@ flatpak_builtin_override (int argc, char **argv, GCancellable *cancellable, GErr if (argc >= 2) { app = argv[1]; - if (!flatpak_is_valid_name (app, &my_error)) + if (!flatpak_is_valid_name (app, -1, &my_error)) return flatpak_fail (error, _("'%s' is not a valid application name: %s"), app, my_error->message); } else diff --git a/app/flatpak-builtins-remote-ls.c b/app/flatpak-builtins-remote-ls.c index 6a928586..51363736 100644 --- a/app/flatpak-builtins-remote-ls.c +++ b/app/flatpak-builtins-remote-ls.c @@ -203,7 +203,7 @@ ls_remote (GHashTable *refs_hash, const char **arches, const char *app_runtime, if (!opt_all && strcmp (parts[0], "runtime") == 0 && - flatpak_id_has_subref_suffix (parts[1])) + flatpak_id_has_subref_suffix (parts[1], -1)) { g_autofree char *prefix_partial_ref = NULL; char *last_dot = strrchr (parts[1], '.'); diff --git a/app/flatpak-builtins-uninstall.c b/app/flatpak-builtins-uninstall.c index e171d49e..19fae232 100644 --- a/app/flatpak-builtins-uninstall.c +++ b/app/flatpak-builtins-uninstall.c @@ -173,7 +173,7 @@ flatpak_builtin_uninstall (int argc, char **argv, GCancellable *cancellable, GEr n_prefs = argc - 1; /* Backwards compat for old "NAME [BRANCH]" argument version */ - if (argc == 3 && flatpak_is_valid_name (argv[1], NULL) && looks_like_branch (argv[2])) + if (argc == 3 && flatpak_is_valid_name (argv[1], -1, NULL) && looks_like_branch (argv[2])) { default_branch = argv[2]; n_prefs = 1; @@ -287,7 +287,7 @@ flatpak_builtin_uninstall (int argc, char **argv, GCancellable *cancellable, GEr &matched_kinds, &id, &arch, &branch); /* We used _novalidate so that the id can be partial, but we can still validate the branch */ - if (branch != NULL && !flatpak_is_valid_branch (branch, &local_error)) + if (branch != NULL && !flatpak_is_valid_branch (branch, -1, &local_error)) return flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid branch %s: %s"), branch, local_error->message); ref_dir_pairs = g_ptr_array_new_with_free_func ((GDestroyNotify) ref_dir_pair_free); diff --git a/app/flatpak-builtins-utils.c b/app/flatpak-builtins-utils.c index b42894b3..57496ba7 100644 --- a/app/flatpak-builtins-utils.c +++ b/app/flatpak-builtins-utils.c @@ -76,7 +76,7 @@ looks_like_branch (const char *branch) /* In particular, / is not a valid branch char, so this lets us distinguish full or partial refs as non-branches. */ - if (!flatpak_is_valid_branch (branch, NULL)) + if (!flatpak_is_valid_branch (branch, -1, NULL)) return FALSE; /* Dots are allowed in branches, but not really used much, while diff --git a/app/flatpak-complete.c b/app/flatpak-complete.c index a61b0a0d..02b4e14c 100644 --- a/app/flatpak-complete.c +++ b/app/flatpak-complete.c @@ -231,7 +231,7 @@ flatpak_complete_partial_ref (FlatpakCompletion *completion, if (!g_str_has_prefix (parts[element], cur_parts[element])) continue; - if (flatpak_id_has_subref_suffix (parts[element])) + if (flatpak_id_has_subref_suffix (parts[element], -1)) { char *last_dot = strrchr (parts[element], '.'); diff --git a/app/flatpak-main.c b/app/flatpak-main.c index 62151e02..e7e90a5c 100644 --- a/app/flatpak-main.c +++ b/app/flatpak-main.c @@ -550,7 +550,7 @@ find_similar_command (const char *word, if (!commands[i].fn) continue; - int d1 = flatpak_levenshtein_distance (word, commands[i].name); + int d1 = flatpak_levenshtein_distance (word, -1, commands[i].name, -1); if (d1 < d) { d = d1; @@ -563,7 +563,7 @@ find_similar_command (const char *word, { for (i = 0; entries[k][i].long_name; i++) { - int d1 = flatpak_levenshtein_distance (word, entries[k][i].long_name); + int d1 = flatpak_levenshtein_distance (word, -1, entries[k][i].long_name, -1); if (d1 < d) { d = d1; diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 1d8197b2..f80075e2 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -12097,13 +12097,13 @@ find_matching_refs (GHashTable *refs, arches = opt_arches; if (opt_name && !(flags & FIND_MATCHING_REFS_FLAGS_FUZZY) && - !flatpak_is_valid_name (opt_name, &local_error)) + !flatpak_is_valid_name (opt_name, -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("'%s' is not a valid name: %s"), opt_name, local_error->message); return NULL; } - if (opt_branch && !flatpak_is_valid_branch (opt_branch, &local_error)) + if (opt_branch && !flatpak_is_valid_branch (opt_branch, -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("'%s' is not a valid branch name: %s"), opt_branch, local_error->message); return NULL; @@ -12136,12 +12136,12 @@ find_matching_refs (GHashTable *refs, if (parts == NULL) continue; - if ((flags & FIND_MATCHING_REFS_FLAGS_FUZZY) && !flatpak_id_has_subref_suffix (parts[1])) + if ((flags & FIND_MATCHING_REFS_FLAGS_FUZZY) && !flatpak_id_has_subref_suffix (parts[1], -1)) { /* See if the given name looks similar to this ref name. The * Levenshtein distance constant was chosen pretty arbitrarily. */ if (opt_name != NULL && strcasestr (parts[1], opt_name) == NULL && - flatpak_levenshtein_distance (opt_name, parts[1]) > 2) + flatpak_levenshtein_distance (opt_name, -1, parts[1], -1) > 2) continue; } else diff --git a/common/flatpak-utils-private.h b/common/flatpak-utils-private.h index 98df4d15..dbd3816e 100644 --- a/common/flatpak-utils-private.h +++ b/common/flatpak-utils-private.h @@ -199,14 +199,17 @@ gboolean flatpak_get_allowed_exports (const char *source_path, gboolean *require_exact_match_out); gboolean flatpak_is_valid_name (const char *string, + gssize len, GError **error); gboolean flatpak_is_valid_branch (const char *string, + gssize len, GError **error); gboolean flatpak_has_name_prefix (const char *string, const char *name); char * flatpak_make_valid_id_prefix (const char *orig_id); -gboolean flatpak_id_has_subref_suffix (const char *id); +gboolean flatpak_id_has_subref_suffix (const char *id, + gssize id_len); char **flatpak_decompose_ref (const char *ref, GError **error); @@ -932,7 +935,9 @@ gboolean flatpak_check_required_version (const char *ref, GError **error); int flatpak_levenshtein_distance (const char *s, - const char *t); + gssize ls, + const char *t, + gssize lt); char * flatpak_dconf_path_for_app_id (const char *app_id); gboolean flatpak_dconf_path_is_similar (const char *path1, diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 1a579bb5..ecd206ff 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -706,9 +706,23 @@ is_valid_name_character (gint c, gboolean allow_dash) (c >= '0' && c <= '9'); } +static const char * +find_last_char (const char *str, gsize len, int c) +{ + const char *p = str + len - 1; + while (p >= str) + { + if (*p == c) + return p; + p--; + } + return NULL; +} + /** * flatpak_is_valid_name: * @string: The string to check + * @len: The string length, or -1 for null-terminated * @error: Return location for an error * * Checks if @string is a valid application name. @@ -735,9 +749,9 @@ is_valid_name_character (gint c, gboolean allow_dash) */ gboolean flatpak_is_valid_name (const char *string, + gssize len, GError **error) { - guint len; gboolean ret; const gchar *s; const gchar *end; @@ -749,7 +763,8 @@ flatpak_is_valid_name (const char *string, ret = FALSE; - len = strlen (string); + if (len < 0) + len = strlen (string); if (G_UNLIKELY (len == 0)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_NAME, @@ -766,7 +781,7 @@ flatpak_is_valid_name (const char *string, end = string + len; - last_dot = strrchr (string, '.'); + last_dot = find_last_char (string, len, '.'); last_element = FALSE; s = string; @@ -1004,6 +1019,7 @@ is_valid_branch_character (gint c) /** * flatpak_is_valid_branch: * @string: The string to check + * @len: The string length, or -1 for null-terminated * @error: return location for an error * * Checks if @string is a valid branch name. @@ -1019,9 +1035,9 @@ is_valid_branch_character (gint c) */ gboolean flatpak_is_valid_branch (const char *string, + gssize len, GError **error) { - guint len; gboolean ret; const gchar *s; const gchar *end; @@ -1030,7 +1046,8 @@ flatpak_is_valid_branch (const char *string, ret = FALSE; - len = strlen (string); + if (len < 0) + len = strlen (string); if (G_UNLIKELY (len == 0)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_NAME, @@ -1086,13 +1103,31 @@ flatpak_make_valid_id_prefix (const char *orig_id) return id; } -gboolean -flatpak_id_has_subref_suffix (const char *id) +static gboolean +str_has_suffix (const gchar *str, gsize str_len, + const gchar *suffix) { + gsize suffix_len; + + suffix_len = strlen (suffix); + if (str_len < suffix_len) + return FALSE; + + return strcmp (str + str_len - suffix_len, suffix) == 0; +} + + +gboolean +flatpak_id_has_subref_suffix (const char *id, + gssize id_len) +{ + if (id_len < 0) + id_len = strlen (id); + return - g_str_has_suffix (id, ".Locale") || - g_str_has_suffix (id, ".Debug") || - g_str_has_suffix (id, ".Sources"); + str_has_suffix (id, id_len, ".Locale") || + str_has_suffix (id, id_len, ".Debug") || + str_has_suffix (id, id_len, ".Sources"); } @@ -1403,7 +1438,7 @@ flatpak_decompose_ref (const char *full_ref, return NULL; } - if (!flatpak_is_valid_name (parts[1], &local_error)) + if (!flatpak_is_valid_name (parts[1], -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid name %s: %s"), parts[1], local_error->message); return NULL; @@ -1415,7 +1450,7 @@ flatpak_decompose_ref (const char *full_ref, return NULL; } - if (!flatpak_is_valid_branch (parts[3], &local_error)) + if (!flatpak_is_valid_branch (parts[3], -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid branch %s: %s"), parts[3], local_error->message); return NULL; @@ -1503,7 +1538,7 @@ _flatpak_split_partial_ref_arg (const char *partial_ref, id_end = next_element (&partial_ref); id = g_strndup (id_start, id_end - id_start); - if (validate && !flatpak_is_valid_name (id, &local_error)) + if (validate && !flatpak_is_valid_name (id, -1, &local_error)) return flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid id %s: %s"), id, local_error->message); arch_start = partial_ref; @@ -1520,7 +1555,7 @@ _flatpak_split_partial_ref_arg (const char *partial_ref, else branch = g_strdup (default_branch); - if (validate && branch != NULL && !flatpak_is_valid_branch (branch, &local_error)) + if (validate && branch != NULL && !flatpak_is_valid_branch (branch, -1, &local_error)) return flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("Invalid branch %s: %s"), branch, local_error->message); if (out_kinds) @@ -1590,13 +1625,13 @@ flatpak_compose_ref (gboolean app, { g_autoptr(GError) local_error = NULL; - if (!flatpak_is_valid_name (name, &local_error)) + if (!flatpak_is_valid_name (name, -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("'%s' is not a valid name: %s"), name, local_error->message); return NULL; } - if (branch && !flatpak_is_valid_branch (branch, &local_error)) + if (branch && !flatpak_is_valid_branch (branch, -1, &local_error)) { flatpak_fail_error (error, FLATPAK_ERROR_INVALID_REF, _("'%s' is not a valid branch name: %s"), branch, local_error->message); return NULL; @@ -8290,13 +8325,20 @@ dist (const char *s, int ls, const char *t, int lt, int i, int j, int *d) } int -flatpak_levenshtein_distance (const char *s, const char *t) +flatpak_levenshtein_distance (const char *s, + gssize ls, + const char *t, + gssize lt) { - int ls = strlen (s); - int lt = strlen (t); int i, j; int *d; + if (ls < 0) + ls = strlen (s); + + if (lt < 0) + lt = strlen (t); + d = alloca (sizeof (int) * (ls + 1) * (lt + 1)); for (i = 0; i <= ls; i++) diff --git a/tests/testcommon.c b/tests/testcommon.c index a8b96f2c..21df877b 100644 --- a/tests/testcommon.c +++ b/tests/testcommon.c @@ -77,23 +77,27 @@ test_extension_matches (void) static void test_valid_name (void) { - g_assert_false (flatpak_is_valid_name ("", NULL)); - g_assert_false (flatpak_is_valid_name ("org", NULL)); - g_assert_false (flatpak_is_valid_name ("org.", NULL)); - g_assert_false (flatpak_is_valid_name ("org..", NULL)); - g_assert_false (flatpak_is_valid_name ("org..test", NULL)); - g_assert_false (flatpak_is_valid_name ("org.flatpak", NULL)); - g_assert_false (flatpak_is_valid_name ("org.1flatpak.test", NULL)); - g_assert_false (flatpak_is_valid_name ("org.flat-pak.test", NULL)); - g_assert_false (flatpak_is_valid_name ("org.-flatpak.test", NULL)); - g_assert_false (flatpak_is_valid_name ("org.flat,pak.test", NULL)); + g_assert_false (flatpak_is_valid_name ("", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org..", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org..test", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flatpak", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.1flatpak.test", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flat-pak.test", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.-flatpak.test", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flat,pak.test", -1, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flatpak.test", 0, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flatpak.test", 3, NULL)); + g_assert_false (flatpak_is_valid_name ("org.flatpak.test", 4, NULL)); - g_assert_true (flatpak_is_valid_name ("org.flatpak.test", NULL)); - g_assert_true (flatpak_is_valid_name ("org.FlatPak.TEST", NULL)); - g_assert_true (flatpak_is_valid_name ("org0.f1atpak.test", NULL)); - g_assert_true (flatpak_is_valid_name ("org.flatpak.-test", NULL)); - g_assert_true (flatpak_is_valid_name ("org.flatpak._test", NULL)); - g_assert_true (flatpak_is_valid_name ("org.flat_pak__.te--st", NULL)); + g_assert_true (flatpak_is_valid_name ("org.flatpak.test", -1, NULL)); + g_assert_true (flatpak_is_valid_name ("org.flatpak.test", strlen("org.flatpak.test"), NULL)); + g_assert_true (flatpak_is_valid_name ("org.FlatPak.TEST", -1, NULL)); + g_assert_true (flatpak_is_valid_name ("org0.f1atpak.test", -1, NULL)); + g_assert_true (flatpak_is_valid_name ("org.flatpak.-test", -1, NULL)); + g_assert_true (flatpak_is_valid_name ("org.flatpak._test", -1, NULL)); + g_assert_true (flatpak_is_valid_name ("org.flat_pak__.te--st", -1, NULL)); } typedef struct @@ -201,8 +205,8 @@ test_levenshtein (void) { Levenshtein *data = &levenshtein_tests[idx]; - g_assert_cmpint (flatpak_levenshtein_distance (data->a, data->b), ==, data->distance); - g_assert_cmpint (flatpak_levenshtein_distance (data->b, data->a), ==, data->distance); + g_assert_cmpint (flatpak_levenshtein_distance (data->a, -1, data->b, -1), ==, data->distance); + g_assert_cmpint (flatpak_levenshtein_distance (data->b, -1, data->a, -1), ==, data->distance); } }