examples: add missing argv_dup alloc checks
Bug: aomedia:3276
Change-Id: Iac523c1b8ec4381b3e0df1050bcb4a52490cdcb7
diff --git a/apps/aomdec.c b/apps/aomdec.c
index 9a052ce..2c74dd3 100644
--- a/apps/aomdec.c
+++ b/apps/aomdec.c
@@ -493,6 +493,10 @@
/* Parse command line */
exec_name = argv_[0];
argv = argv_dup(argc - 1, argv_ + 1);
+ if (!argv) {
+ fprintf(stderr, "Error allocating argument list\n");
+ return EXIT_FAILURE;
+ }
aom_codec_iface_t *interface = NULL;
for (argi = argj = argv; (*argj = *argi); argi += arg.argv_step) {
@@ -1040,6 +1044,10 @@
int error = 0;
argv = argv_dup(argc - 1, argv_ + 1);
+ if (!argv) {
+ fprintf(stderr, "Error allocating argument list\n");
+ return EXIT_FAILURE;
+ }
for (argi = argj = argv; (*argj = *argi); argi += arg.argv_step) {
memset(&arg, 0, sizeof(arg));
arg.argv_step = 1;
diff --git a/apps/aomenc.c b/apps/aomenc.c
index 182606f..11e548f 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -1993,6 +1993,10 @@
* codec.
*/
argv = argv_dup(argc - 1, argv_ + 1);
+ if (!argv) {
+ fprintf(stderr, "Error allocating argument list\n");
+ return EXIT_FAILURE;
+ }
parse_global_config(&global, &argv);
if (argc < 2) usage_exit();
diff --git a/common/args.c b/common/args.c
index 686fcd2..b5ede19 100644
--- a/common/args.c
+++ b/common/args.c
@@ -146,6 +146,7 @@
char **argv_dup(int argc, const char **argv) {
char **new_argv = malloc((argc + 1) * sizeof(*argv));
+ if (!new_argv) return NULL;
memcpy(new_argv, argv, argc * sizeof(*argv));
new_argv[argc] = NULL;
diff --git a/examples/svc_encoder_rtc.c b/examples/svc_encoder_rtc.c
index 2e76c96..fc2bf87 100644
--- a/examples/svc_encoder_rtc.c
+++ b/examples/svc_encoder_rtc.c
@@ -265,6 +265,10 @@
// process command line options
argv = argv_dup(argc - 1, argv_ + 1);
+ if (!argv) {
+ fprintf(stderr, "Error allocating argument list\n");
+ exit(EXIT_FAILURE);
+ }
for (argi = argj = argv; (*argj = *argi); argi += arg.argv_step) {
arg.argv_step = 1;