X-Git-Url: https://git.librecmc.org/?p=oweals%2Fopkg-lede.git;a=blobdiff_plain;f=libopkg%2Fopkg_conf.c;h=193ae5c66d286818e69c7c23b2285381002e132b;hp=238754cecfb599882d055ea7d78afb5f348fdf24;hb=9ba412631e57deb365d5e7fb8b8c2fbf9bfe27b0;hpb=94e00a584d7e2d28d23ead5c47e56bc421e2b5f9 diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c index 238754c..193ae5c 100644 --- a/libopkg/opkg_conf.c +++ b/libopkg/opkg_conf.c @@ -318,19 +318,27 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) /* Pigi: added a flag to disable the checking of structures if the command does not need to read anything from there. */ - if ( !(args->nocheckfordirorfile)){ - /* need to run load the source list before dest list -Jamey */ - if ( !(args->noreadfeedsfile)) - set_and_load_pkg_src_list(conf, &conf->pkg_src_list); + if (!(args->nocheckfordirorfile)) { + + if (!(args->noreadfeedsfile)) { + if (set_and_load_pkg_src_list(conf, &conf->pkg_src_list)) { + nv_pair_list_deinit(&tmp_dest_nv_pair_list); + return -1; + } + } /* Now that we have resolved conf->offline_root, we can commit to the directory names for the dests and load in all the package lists. */ - set_and_load_pkg_dest_list(conf, &tmp_dest_nv_pair_list); + if (set_and_load_pkg_dest_list(conf, &tmp_dest_nv_pair_list)) { + nv_pair_list_deinit(&tmp_dest_nv_pair_list); + return -1; + } if (args->dest) { err = opkg_conf_set_default_dest(conf, args->dest); if (err) { + nv_pair_list_deinit(&tmp_dest_nv_pair_list); return OPKG_CONF_ERR_DEFAULT_DEST; } } @@ -423,7 +431,8 @@ static int opkg_conf_set_default_dest(opkg_conf_t *conf, return 1; } -static int set_and_load_pkg_src_list(opkg_conf_t *conf, pkg_src_list_t *pkg_src_list) +static int +set_and_load_pkg_src_list(opkg_conf_t *conf, pkg_src_list_t *pkg_src_list) { pkg_src_list_elt_t *iter; pkg_src_t *src; @@ -440,7 +449,10 @@ static int set_and_load_pkg_src_list(opkg_conf_t *conf, pkg_src_list_t *pkg_src_ src->name); if (file_exists(list_file)) { - pkg_hash_add_from_file(conf, list_file, src, NULL, 0); + if (pkg_hash_add_from_file(conf, list_file, src, NULL, 0)) { + free(list_file); + return -1; + } } free(list_file); } @@ -448,7 +460,8 @@ static int set_and_load_pkg_src_list(opkg_conf_t *conf, pkg_src_list_t *pkg_src_ return 0; } -static int set_and_load_pkg_dest_list(opkg_conf_t *conf, nv_pair_list_t *nv_pair_list) +static int +set_and_load_pkg_dest_list(opkg_conf_t *conf, nv_pair_list_t *nv_pair_list) { nv_pair_list_elt_t *iter; nv_pair_t *nv_pair; @@ -472,8 +485,9 @@ static int set_and_load_pkg_dest_list(opkg_conf_t *conf, nv_pair_list_t *nv_pair conf->default_dest = dest; } if (file_exists(dest->status_file_name)) { - pkg_hash_add_from_file(conf, dest->status_file_name, - NULL, dest, 1); + if (pkg_hash_add_from_file(conf, dest->status_file_name, + NULL, dest, 1)) + return -1; } } @@ -526,14 +540,11 @@ static int opkg_conf_parse_file(opkg_conf_t *conf, const char *filename, break; } - str_chomp(line); - if (regexec(&comment_re, line, 0, 0, 0) == 0) { goto NEXT_LINE; } if (regexec(&valid_line_re, line, regmatch_size, regmatch, 0) == REG_NOMATCH) { - str_chomp(line); fprintf(stderr, "%s:%d: Ignoring invalid line: `%s'\n", filename, line_num, line); goto NEXT_LINE;