diff options
Diffstat (limited to 'src/modules/rtv/rtv.c')
-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; } |