]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
ui-repolist: initialize char *buf to NULL
[ps-cgit] / ui-shared.c
index b7396756dfe1416e25d77776fac53259b34a365d..c04f380be52defbcfb2afb9187b61529c24e68ed 100644 (file)
@@ -54,14 +54,14 @@ const char *cgit_httpscheme(void)
                return "http://";
 }
 
-const char *cgit_hosturl(void)
+char *cgit_hosturl(void)
 {
        if (ctx.env.http_host)
-               return ctx.env.http_host;
+               return xstrdup(ctx.env.http_host);
        if (!ctx.env.server_name)
                return NULL;
        if (!ctx.env.server_port || atoi(ctx.env.server_port) == 80)
-               return ctx.env.server_name;
+               return xstrdup(ctx.env.server_name);
        return fmtalloc("%s:%s", ctx.env.server_name, ctx.env.server_port);
 }
 
@@ -157,8 +157,11 @@ static void site_url(const char *page, const char *search, const char *sort, int
 
        if (always_root || page)
                html_attr(cgit_rooturl());
-       else
-               html_attr(cgit_currenturl());
+       else {
+               char *currenturl = cgit_currenturl();
+               html_attr(currenturl);
+               free(currenturl);
+       }
 
        if (page) {
                htmlf("?p=%s", page);
@@ -727,7 +730,7 @@ void cgit_print_docstart(void)
                return;
        }
 
-       const char *host = cgit_hosturl();
+       char *host = cgit_hosturl();
        html(cgit_doctype);
        html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n");
        html("<head>\n");
@@ -752,7 +755,7 @@ void cgit_print_docstart(void)
 
                html("<link rel='alternate' title='Atom feed' href='");
                html(cgit_httpscheme());
-               html_attr(cgit_hosturl());
+               html_attr(host);
                fileurl = cgit_fileurl(ctx.repo->url, "atom", ctx.qry.vpath,
                                       sb.buf);
                html_attr(fileurl);
@@ -768,6 +771,7 @@ void cgit_print_docstart(void)
        html("<body>\n");
        if (ctx.cfg.header)
                html_include(ctx.cfg.header);
+       free(host);
 }
 
 void cgit_print_docend(void)
@@ -1020,19 +1024,21 @@ void cgit_print_pageheader(void)
                html("<input type='submit' value='search'/>\n");
                html("</form>\n");
        } else if (ctx.env.authenticated) {
+               char *currenturl = cgit_currenturl();
                site_link(NULL, "index", NULL, hc("repolist"), NULL, NULL, 0, 1);
                if (ctx.cfg.root_readme)
                        site_link("about", "about", NULL, hc("about"),
                                  NULL, NULL, 0, 1);
                html("</td><td class='form'>");
                html("<form method='get' action='");
-               html_attr(cgit_currenturl());
+               html_attr(currenturl);
                html("'>\n");
                html("<input type='text' name='q' size='10' value='");
                html_attr(ctx.qry.search);
                html("'/>\n");
                html("<input type='submit' value='search'/>\n");
                html("</form>");
+               free(currenturl);
        }
        html("</td></tr></table>\n");
        if (ctx.env.authenticated && ctx.qry.vpath) {