mirror of
https://github.com/versity/scoutfs.git
synced 2025-12-23 05:25:18 +00:00
Remove wordexp expansion of utils path argument
scoutfs cli commands were using a helper that tried to perform word expansion on the path argument. This was done with the intent of providing the convenience of shell expansion (env vars, ~) within the cli command argument. But it breaks paths that accidentally have their file names match the syntax that wordexp supports. "[ ]" tripped up files in the wild. We don't need to provide shell expansion functionality in our argument parsing. The shell can do that. The cli must pass the arguments straight through, no parsing at all. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <wordexp.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "format.h"
|
||||
@@ -18,26 +17,15 @@
|
||||
|
||||
static int open_path(char *path, int flags)
|
||||
{
|
||||
wordexp_t exp_result;
|
||||
int ret;
|
||||
|
||||
ret = wordexp(path, &exp_result, WRDE_NOCMD | WRDE_SHOWERR | WRDE_UNDEF);
|
||||
if (ret) {
|
||||
fprintf(stderr, "wordexp() failure for \"%s\": %d\n", path, ret);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = open(exp_result.we_wordv[0], flags);
|
||||
ret = open(path, flags);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "failed to open '%s': %s (%d)\n",
|
||||
path, strerror(errno), errno);
|
||||
}
|
||||
|
||||
out:
|
||||
wordfree(&exp_result);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user