summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gui.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gtk/gui.c b/gtk/gui.c
index 1c108a165..3147bf1b8 100644
--- a/gtk/gui.c
+++ b/gtk/gui.c
@@ -421,13 +421,15 @@ static void gui_init(int argc, char** argv, char **respath)
if (argc > 1) {
struct stat fs;
if (stat(argv[1], &fs) == 0) {
+ size_t addrlen;
char *rp = realpath(argv[1], NULL);
assert(rp != NULL);
- addr = malloc(SLEN("file://") + strlen(rp) + /*\0 */ 1);
+
+ /* calculate file url length including terminator */
+ addrlen = SLEN("file://") + strlen(rp) + 1;
+ addr = malloc(addrlen);
assert(addr != NULL);
- /* These are safe thanks to the above sum */
- strcpy(addr, "file://");
- strcat(addr, rp);
+ snprintf(addr, addrlen, "file://%s", rp);
free(rp);
} else {
addr = strdup(argv[1]);