aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Pärtel <martin.partel@gmail.com>2021-02-13 05:00:01 +0200
committerMartin Pärtel <martin.partel@gmail.com>2021-02-13 05:00:01 +0200
commit8333d5e4408021a2c668e6a159eec19d43e2472c (patch)
treeb7352db75ef8fe107c647fc017a81db6e508913a
parente71f60643d0017c9578e9676e8e2a51c5a340d29 (diff)
downloadbindfs-8333d5e4408021a2c668e6a159eec19d43e2472c.tar.gz
filter_special_opts: allocate space for null terminator.
-rw-r--r--src/bindfs.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/bindfs.c b/src/bindfs.c
index add6311..57d0a8e 100644
--- a/src/bindfs.c
+++ b/src/bindfs.c
@@ -2360,7 +2360,7 @@ struct fuse_args filter_special_opts(struct fuse_args *args)
/* remove ignored option from a comma separated list */
if (strchr(args->argv[i+1], ',') != NULL) {
- char *tmpStr = (char*) calloc(strlen(args->argv[i+1]), sizeof(char));
+ char *tmpStr = (char*) calloc(strlen(args->argv[i+1]) + 1, sizeof(char));
char *ptr = strtok(args->argv[i+1], ",");
while (ptr != NULL) {
ignore = false;
@@ -2377,7 +2377,7 @@ struct fuse_args filter_special_opts(struct fuse_args *args)
ptr = strtok(NULL, ",");
}
if (strlen(tmpStr) > 0) {
- args->argv[i+1] = (char*) calloc(strlen(tmpStr), sizeof(char));
+ args->argv[i+1] = (char*) calloc(strlen(tmpStr) + 1, sizeof(char));
strcpy(args->argv[i+1], tmpStr);
free(tmpStr);
ignore = false;
@@ -2405,10 +2405,10 @@ struct fuse_args filter_special_opts(struct fuse_args *args)
/* remove ignored option from a comma seperated list */
if (strchr(args->argv[i], ',') != NULL) {
- char *tmpStr = (char*) calloc(strlen(args->argv[i]), sizeof(char));
- char *tmpStr2 = (char*) calloc(strlen(args->argv[i])-2, sizeof(char));
+ char *tmpStr = (char*) calloc(strlen(args->argv[i]) + 1, sizeof(char));
+ char *tmpStr2 = (char*) calloc(strlen(args->argv[i]) + 1 - 2, sizeof(char));
// remove first 2 chars from args->argv[i] and save this to tmpStr2
- memmove(tmpStr2, args->argv[i]+2, strlen(args->argv[i])-2);
+ memcpy(tmpStr2, args->argv[i] + 2, strlen(args->argv[i]) - 2);
char *ptr = strtok(tmpStr2, ",");
while (ptr != NULL) {
ignore = false;
@@ -2425,7 +2425,7 @@ struct fuse_args filter_special_opts(struct fuse_args *args)
ptr = strtok(NULL, ",");
}
if (strlen(tmpStr) > 0) {
- args->argv[i] = (char*) calloc(strlen(tmpStr)+2, sizeof(char));
+ args->argv[i] = (char*) calloc(2 + strlen(tmpStr) + 1, sizeof(char));
strcat(args->argv[i], "-o");
strcat(args->argv[i], tmpStr);
free(tmpStr);
@@ -2440,7 +2440,7 @@ struct fuse_args filter_special_opts(struct fuse_args *args)
/* ignore this element if it has exactly the ignored option */
else {
for (int j = 0; ignore_opts[j]; j++) {
- char* tmpStr = (char*) calloc(3 + strlen(ignore_opts[j]), sizeof(char));
+ char* tmpStr = (char*) calloc(2 + strlen(ignore_opts[j]) + 1, sizeof(char));
strcat(tmpStr, "-o");
strcat(tmpStr, ignore_opts[j]);
if (strcmp(args->argv[i], tmpStr) == 0) {