libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit 0e4151c91c831ebe74e53ce14d639d291d4fc87f
parent 1ff488ca3fe6b2f625ef06d568c7c005e1870b55
Author: Christian Grothoff <christian@grothoff.org>
Date:   Wed, 28 Aug 2013 09:31:59 +0000

-check for malloc failure

Diffstat:
Msrc/main/extract.c | 9+++++++++
1 file changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/main/extract.c b/src/main/extract.c @@ -643,6 +643,8 @@ _make_continuous_arg_copy (int argc, char *const *argv) for (i = 0; i < argc; i++) argvsize += strlen (argv[i]) + 1 + sizeof (char *); new_argv = malloc (argvsize + sizeof (char *)); + if (NULL == new_argv) + return NULL; p = (char *) &new_argv[argc + 1]; for (i = 0; i < argc; i++) { @@ -702,6 +704,11 @@ _get_utf8_args (int argc, char *const *argv, int *u8argc, char ***u8argv) } *u8argv = _make_continuous_arg_copy (wargc, split_u8argv); + if (NULL == *u8argv) + { + free (split_u8argv); + return -1; + } *u8argc = wargc; for (i = 0; i < wargc; i++) @@ -709,6 +716,8 @@ _get_utf8_args (int argc, char *const *argv, int *u8argc, char ***u8argv) free (split_u8argv); #else *u8argv = _make_continuous_arg_copy (argc, argv); + if (NULL == *u8argv) + return -1; *u8argc = argc; #endif return 0;