summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mruby/tools
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-08-07 16:23:31 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-08-07 16:23:31 -0700
commit3b2b760ed3f67cd0e1400df50becaffb7a75a1cd (patch)
treeee843fadf47c1c6b7409dbc14a323d8fb4dd2d25 /mrbgems/mruby-bin-mruby/tools
parentd2be15423a7fc54f143c517ef6f5a2b1a6e17163 (diff)
parent29381bc819bdb0602ef4005a7d01daf605310fce (diff)
downloadmruby-3b2b760ed3f67cd0e1400df50becaffb7a75a1cd.tar.gz
mruby-3b2b760ed3f67cd0e1400df50becaffb7a75a1cd.zip
Merge pull request #1445 from cremno/no_strcpy_and_strcat
don't use str{cpy,cat} in mruby and mrbc
Diffstat (limited to 'mrbgems/mruby-bin-mruby/tools')
-rw-r--r--mrbgems/mruby-bin-mruby/tools/mruby/mruby.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
index 97b55687f..baeb95993 100644
--- a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
+++ b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
@@ -91,16 +91,24 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
item = argv[0];
append_cmdline:
if (!args->cmdline) {
+ size_t buflen;
char *buf;
- buf = (char *)mrb_malloc(mrb, strlen(item)+1);
- strcpy(buf, item);
+ buflen = strlen(item) + 1;
+ buf = (char *)mrb_malloc(mrb, buflen);
+ memcpy(buf, item, buflen);
args->cmdline = buf;
}
else {
- args->cmdline = (char *)mrb_realloc(mrb, args->cmdline, strlen(args->cmdline)+strlen(item)+2);
- strcat(args->cmdline, "\n");
- strcat(args->cmdline, item);
+ size_t cmdlinelen;
+ size_t itemlen;
+
+ cmdlinelen = strlen(args->cmdline);
+ itemlen = strlen(item);
+ args->cmdline =
+ (char *)mrb_realloc(mrb, args->cmdline, cmdlinelen + itemlen + 2);
+ args->cmdline[cmdlinelen] = '\n';
+ memcpy(args->cmdline + cmdlinelen + 1, item, itemlen + 1);
}
}
else {