{
        struct map *map = args->map;
        struct dso *dso = map->dso;
-       char command[PATH_MAX * 2];
+       char *command;
        FILE *file;
        char symfs_filename[PATH_MAX];
        struct kcore_extract kce;
                strcpy(symfs_filename, tmp);
        }
 
-       snprintf(command, sizeof(command),
+       err = asprintf(&command,
                 "%s %s%s --start-address=0x%016" PRIx64
                 " --stop-address=0x%016" PRIx64
                 " -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand",
                 symbol_conf.annotate_src ? "-S" : "",
                 symfs_filename, symfs_filename);
 
+       if (err < 0) {
+               pr_err("Failure allocating memory for the command to run\n");
+               goto out_remove_tmp;
+       }
+
        pr_debug("Executing: %s\n", command);
 
        err = -1;
        if (pipe(stdout_fd) < 0) {
                pr_err("Failure creating the pipe to run %s\n", command);
-               goto out_remove_tmp;
+               goto out_free_command;
        }
 
        pid = fork();
                 * If we were using debug info should retry with
                 * original binary.
                 */
-               goto out_remove_tmp;
+               goto out_free_command;
        }
 
        nline = 0;
 
        fclose(file);
        err = 0;
+out_free_command:
+       free(command);
 out_remove_tmp:
        close(stdout_fd[0]);
 
 
 out_close_stdout:
        close(stdout_fd[1]);
-       goto out_remove_tmp;
+       goto out_free_command;
 }
 
 static void calc_percent(struct sym_hist *hist,