summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2022-04-28 17:45:47 -0700
committerJames Zern <jzern@google.com>2022-04-28 17:45:47 -0700
commit872732b2c90eda09f6db1a21b5eee6dc36e813f3 (patch)
tree3722b5f31f4a2d2948b1b0f608a06adabfa5c245
parent2858ef9ec6fe99d92074216c54a1ff7c09b1b667 (diff)
downloadlibvpx-872732b2c90eda09f6db1a21b5eee6dc36e813f3.tar
libvpx-872732b2c90eda09f6db1a21b5eee6dc36e813f3.tar.gz
libvpx-872732b2c90eda09f6db1a21b5eee6dc36e813f3.tar.bz2
libvpx-872732b2c90eda09f6db1a21b5eee6dc36e813f3.zip
examples: add missing argv_dup alloc checks
Change-Id: Ia3080cbf50071d599c7168a20466392a963f101a
-rw-r--r--args.c1
-rw-r--r--examples/vp9_spatial_svc_encoder.c4
-rw-r--r--vpxdec.c9
-rw-r--r--vpxenc.c4
4 files changed, 17 insertions, 1 deletions
diff --git a/args.c b/args.c
index 17b615584..4afb9c021 100644
--- a/args.c
+++ b/args.c
@@ -83,6 +83,7 @@ const char *arg_next(struct arg *arg) {
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/vp9_spatial_svc_encoder.c b/examples/vp9_spatial_svc_encoder.c
index 455f6c903..c45edb9ae 100644
--- a/examples/vp9_spatial_svc_encoder.c
+++ b/examples/vp9_spatial_svc_encoder.c
@@ -222,6 +222,10 @@ static void parse_command_line(int argc, const char **argv_,
// 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;
diff --git a/vpxdec.c b/vpxdec.c
index 363eb1a24..84cef7dfd 100644
--- a/vpxdec.c
+++ b/vpxdec.c
@@ -581,7 +581,10 @@ static int main_loop(int argc, const char **argv_) {
/* 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;
+ }
for (argi = argj = argv; (*argj = *argi); argi += arg.argv_step) {
memset(&arg, 0, sizeof(arg));
arg.argv_step = 1;
@@ -1123,6 +1126,10 @@ int main(int argc, const char **argv_) {
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/vpxenc.c b/vpxenc.c
index b64b6cf44..7eff97b13 100644
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -1703,6 +1703,10 @@ int main(int argc, const char **argv_) {
* 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 < 3) usage_exit();