]> git.ipfire.org Git - pakfire.git/commitdiff
repo: Fail if the baseurl could not be set
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 25 Sep 2023 17:51:16 +0000 (17:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 25 Sep 2023 17:51:16 +0000 (17:51 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/repo.c

index fa64e3964544b9b93b662a3625ba9b5af127f43c..e26d8c724bbd03811343cc90dec3069819776f0f 100644 (file)
@@ -274,8 +274,11 @@ int pakfire_repo_import(struct pakfire* pakfire, struct pakfire_config* config)
 
                // baseurl
                const char* baseurl = pakfire_config_get(config, *section, "baseurl", NULL);
-               if (baseurl)
-                       pakfire_repo_set_baseurl(repo, baseurl);
+               if (baseurl) {
+                       r = pakfire_repo_set_baseurl(repo, baseurl);
+                       if (r)
+                               goto ERROR;
+               }
 
                // Refresh Interval
                const char* refresh = pakfire_config_get(config, *section, "refresh", NULL);
@@ -826,11 +829,11 @@ static char* pakfire_repo_url_replace(struct pakfire_repo* repo, const char* url
                const char* pattern;
                const char* replacement;
        } replacements[] = {
-               { "%{name}", pakfire_repo_get_name(repo) },
-               { "%{arch}", pakfire_get_effective_arch(repo->pakfire) },
-               { "%{distro}", pakfire_get_distro_id(repo->pakfire) },
+               { "%{name}",    pakfire_repo_get_name(repo) },
+               { "%{arch}",    pakfire_get_effective_arch(repo->pakfire) },
+               { "%{distro}",  pakfire_get_distro_id(repo->pakfire) },
                { "%{version}", pakfire_get_distro_version_id(repo->pakfire) },
-               { NULL, NULL },
+               { NULL },
        };
 
        char* buffer = strdup(url);
@@ -838,6 +841,10 @@ static char* pakfire_repo_url_replace(struct pakfire_repo* repo, const char* url
                return NULL;
 
        for (const struct replacement* repl = replacements; repl->pattern; repl++) {
+               // Skip if there is no replacement
+               if (!repl->replacement)
+                       continue;
+
                char* r = pakfire_string_replace(
                        buffer, repl->pattern, repl->replacement);
                free(buffer);