pid_t pid;
char arg[UTIL_PATH_SIZE];
char program[UTIL_PATH_SIZE];
- char *argv[(sizeof(arg) / 2) + 1];
+ char *argv[((sizeof(arg) + 1) / 2) + 1];
int devnull;
int i;
int err = 0;
/* do not separate quotes */
pos++;
argv[i] = strsep(&pos, "\'");
- while (pos != NULL && pos[0] == ' ')
- pos++;
+ if (pos != NULL)
+ while (pos[0] == ' ')
+ pos++;
} else {
argv[i] = strsep(&pos, " ");
+ if (pos != NULL)
+ while (pos[0] == ' ')
+ pos++;
}
dbg(udev, "arg[%i] '%s'\n", i, argv[i]);
i++;
}
if (sigmask)
- sigprocmask(SIG_BLOCK, sigmask, NULL);
+ sigprocmask(SIG_SETMASK, sigmask, NULL);
execve(argv[0], argv, envp);
if (errno == ENOENT || errno == ENOTDIR) {