28 lines
701 B
Diff
28 lines
701 B
Diff
|
|
diff --git a/commands.c b/commands.c
|
||
|
|
index a28e6da..0f76ac7 100644
|
||
|
|
--- a/commands.c
|
||
|
|
+++ b/commands.c
|
||
|
|
@@ -20,6 +20,7 @@
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <string.h>
|
||
|
|
#include <unistd.h>
|
||
|
|
+#include <limits.h>
|
||
|
|
#include <errno.h>
|
||
|
|
#include "commands.h"
|
||
|
|
#include "platform.h"
|
||
|
|
@@ -150,7 +151,13 @@ build_symlink_name(const char *path_to_bin, const struct cmd_info *cmd)
|
||
|
|
{
|
||
|
|
static char link_name[FILENAME_MAX];
|
||
|
|
|
||
|
|
- snprintf(link_name, FILENAME_MAX, "%s/%s", path_to_bin, cmd->name);
|
||
|
|
+ int result = snprintf(link_name, PATH_MAX, "%s/%s", path_to_bin, cmd->name);
|
||
|
|
+
|
||
|
|
+ if (result >= PATH_MAX) {
|
||
|
|
+ link_name[PATH_MAX - 1] = '\0';
|
||
|
|
+ } else if (result < 0) {
|
||
|
|
+ link_name[0] = '\0';
|
||
|
|
+ }
|
||
|
|
|
||
|
|
return link_name;
|
||
|
|
}
|