summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--urlopen.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/urlopen.c b/urlopen.c
index a05db5f..1eeb6f4 100644
--- a/urlopen.c
+++ b/urlopen.c
@@ -27,7 +27,15 @@
#define LEN(arr) ((int) (sizeof (arr) / sizeof (arr)[0]))
#define BUFF_SIZE 256 /* size of malloc buffers (max program/extension list length) */
-#define ARG_LIMIT 20 /* maximum number of arguments in the programs to open */
+/*
+ * maximum number of arguments for the program
+ * the program will only attach ARG_LIMIT-2 arguments to your executed process, the rest are ignored
+ * this is because one argument is saved for the url and one is saved for a NULL chraracter
+ *
+ * the program to execute itself is one argument
+ */
+
+#define ARG_LIMIT 20
char *programs[][2] =
{
@@ -216,7 +224,7 @@ forkexecute(char *url)
strncpy(buff, programs[ext][1], BUFF_SIZE-1);
char *t = strtok(buff, " ");
int z = 0;
- while (t != NULL)
+ while (t != NULL && z < ARG_LIMIT-2) // save a position for the url and NULL
{
args[z] = t;
t = strtok(NULL, " ");