diff options
author | Martin Pärtel <martin.partel@gmail.com> | 2021-02-13 05:00:01 +0200 |
---|---|---|
committer | Martin Pärtel <martin.partel@gmail.com> | 2021-02-13 05:00:01 +0200 |
commit | 8333d5e4408021a2c668e6a159eec19d43e2472c (patch) | |
tree | b7352db75ef8fe107c647fc017a81db6e508913a | |
parent | e71f60643d0017c9578e9676e8e2a51c5a340d29 (diff) | |
download | bindfs-8333d5e4408021a2c668e6a159eec19d43e2472c.tar.gz |
filter_special_opts: allocate space for null terminator.
-rw-r--r-- | src/bindfs.c | 14 |
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) { |