diff options
Diffstat (limited to 'src/modules/rtv')
| -rw-r--r-- | src/modules/rtv/rtv.c | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/src/modules/rtv/rtv.c b/src/modules/rtv/rtv.c index 06dfd90..08f4b8a 100644 --- a/src/modules/rtv/rtv.c +++ b/src/modules/rtv/rtv.c @@ -409,8 +409,11 @@ static int rtv_setup(const til_settings_t *settings, til_setting_t **res_setting  			til_get_modules(&modules, &n_modules);  			tokchannels = strdup(channels); -			if (!tokchannels) +			if (!tokchannels) { +				til_setup_free(&setup->til_setup); +  				return -ENOMEM; +			}  			channel = strtok(tokchannels, ":");  			do { @@ -422,12 +425,16 @@ static int rtv_setup(const til_settings_t *settings, til_setting_t **res_setting  						break;  				} -				if (i >= n_modules) +				if (i >= n_modules) { +					til_setup_free(&setup->til_setup); +  					return -EINVAL; +				}  				new = realloc(setup, sizeof(*setup) + n * sizeof(setup->channels[0]));  				if (!new) { -					free(setup); +					til_setup_free(&setup->til_setup); +  					return -ENOMEM;  				} | 
