From 7ed22b481f47681887bdf1068c910e2a67d688a7 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Fri, 12 May 2023 14:36:09 -0400 Subject: opk/read: Make GCC 12 analyzer STFU What a mess. Fixes most of analyzer*.log (thousands of lines of error messages). --- (limited to 'src/opk/read.c') diff --git a/src/opk/read.c b/src/opk/read.c index 768f64d..2d9f439 100644 --- a/src/opk/read.c +++ b/src/opk/read.c @@ -140,6 +140,8 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) "\n"), stderr); return OPKG_OPK_ERROR; } +/* For below #pragmas: path initialized here + * (opk->control_dir != NULL). */ path = malloc(strlen(opk->control_dir) + OPKG_OPK_USTAR_NAME_SIZE + 1); if (path == NULL) { @@ -152,7 +154,11 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) if (_opkg_opk_opk_read_init_inner(opk) != OPKG_OPK_OK) { if (opk->control_dir != NULL) { +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" free(path); +# pragma GCC diagnostic pop } return OPKG_OPK_ERROR; } @@ -176,27 +182,42 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) free(member); _opkg_opk_opk_read_free_inner(opk); if (opk->control_dir != NULL) { +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" free(path); +# pragma GCC diagnostic pop } return OPKG_OPK_ERROR; } /* Open file for extraction. */ if (opk->control_dir != NULL) { +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" if (sprintf(path, "%s/%s", opk->control_dir, member->name) <= 0) { free(member); _opkg_opk_opk_read_free_inner(opk); free(path); return OPKG_OPK_ERROR; +# pragma GCC diagnostic pop } +/* For below #pragmas: fp initialized here + * (opk->control_dir != NULL). */ +/* GCC analyzer doesn't complain about this use of path? */ fp = fopen(path, "wb"); if (fp == NULL) { fputs(_("Error: Failed to extract control file" "\n"), stderr); free(member); _opkg_opk_opk_read_free_inner(opk); +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" free(path); +# pragma GCC diagnostic pop return OPKG_OPK_ERROR; } } @@ -235,12 +256,16 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) } return OPKG_OPK_ERROR; } +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" if (opk->control_dir != NULL && fwrite(buffer, 1, size, fp) != size) { fputs(_("Error: Failed to write control file\n") , stderr); _opkg_opk_opk_read_free_inner(opk); free(path); +# pragma GCC diagnostic pop return OPKG_OPK_ERROR; } } @@ -249,25 +274,40 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) stderr); _opkg_opk_opk_read_free_inner(opk); if (opk->control_dir != NULL) { +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" free(path); fclose(fp); +# pragma GCC diagnostic pop } +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wanalyzer-file-leak" return OPKG_OPK_ERROR; +# pragma GCC diagnostic pop } opk->previously_printed = 1; /* Close file for extraction. */ if (opk->control_dir != NULL) { +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" if (fclose(fp) != 0) { _opkg_opk_opk_read_free_inner(opk); free(path); +# pragma GCC diagnostic pop return OPKG_OPK_ERROR; } } } if (opk->control_dir != NULL) { /* Done with path buffer. */ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored \ + "-Wanalyzer-use-of-uninitialized-value" free(path); +# pragma GCC diagnostic pop } if (ret_list == OPKG_OPK_ERROR) { fputs(_("Error: Failed to list control files\n"), stderr); -- cgit v0.9.1