From: Andre Noll Date: Sun, 30 Nov 2008 14:23:46 +0000 (+0100) Subject: oggdec_parse_config(): Add some sanity checks. X-Git-Tag: v0.3.3~4 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=0b31b8477e307651513874fcb20c85165c0f129e oggdec_parse_config(): Add some sanity checks. --- diff --git a/oggdec.c b/oggdec.c index 6b96c505..e22ea1e4 100644 --- a/oggdec.c +++ b/oggdec.c @@ -165,10 +165,24 @@ static ssize_t ogg_convert(char *inbuffer, size_t len, struct filter_node *fn) static void *oggdec_parse_config(int argc, char **argv) { - struct oggdec_filter_args_info *ret = para_calloc(sizeof(struct oggdec_filter_args_info)); - if (!oggdec_cmdline_parser(argc, argv, ret)) - return ret; - free(ret); + int ret; + struct oggdec_filter_args_info *ogg_conf; + + ogg_conf = para_calloc(sizeof(*ogg_conf)); + ret = oggdec_cmdline_parser(argc, argv, ogg_conf); + if (ret) + goto err; + if (ogg_conf->bufsize_arg < 0) + goto err; + if (ogg_conf->bufsize_arg >= INT_MAX / 1024) + goto err; + if (ogg_conf->initial_buffer_arg < 0) + goto err; + if (ogg_conf->initial_buffer_arg >= INT_MAX / 1024) + goto err; + return ogg_conf; +err: + free(ogg_conf); return NULL; }