From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id 76B513858D32; Sun, 29 Jan 2023 20:32:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 76B513858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675024368; bh=ReR3GEk+cXlFoQ5AcoMHs4P4L9KKJ5jBpuacmiWTQmE=; h=From:To:Subject:Date:From; b=QXZ4M164b0iRzLgbMPgJ97eIUT17GUY9MPLLSMbmnxR85QM7ijbLh193sGSGcYkka DVzny1ktjtvtuwNh8MBRyrCCvP75lLYQfs/fQPDiARpCTkr435k1gszDWX9P6UHP5i 6tHjm7t5D6ORzHOmisUMMal4oY9pRQi1SP7aE9Aw= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: cygcheck: find_url: fix error handling X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/main X-Git-Oldrev: c061551c67ec1155981eccf642c48d5701624dba X-Git-Newrev: 37c5b6d929bd6acd0f64467ccbd8a298a77ad98a Message-Id: <20230129203248.76B513858D32@sourceware.org> Date: Sun, 29 Jan 2023 20:32:48 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D37c5b6d929b= d6acd0f64467ccbd8a298a77ad98a commit 37c5b6d929bd6acd0f64467ccbd8a298a77ad98a Author: Corinna Vinschen AuthorDate: Sun Jan 29 20:35:45 2023 +0100 Commit: Corinna Vinschen CommitDate: Sun Jan 29 20:35:45 2023 +0100 Cygwin: cygcheck: find_url: fix error handling =20 Signed-off-by: Corinna Vinschen Diff: --- winsup/utils/mingw/cygcheck.cc | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index f4107176fd01..777347371612 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2050,6 +2050,7 @@ fetch_url (const char *url, FILE *outstream) HINTERNET hi =3D NULL, hurl =3D NULL; char buf[4096]; DWORD numread; + int ret; =20 /* Connect to the net and open the URL. */ if (InternetAttemptConnect (0) !=3D ERROR_SUCCESS) @@ -2064,34 +2065,49 @@ fetch_url (const char *url, FILE *outstream) return display_internet_error ("InternetOpen() failed", NULL); =20 if (!(hurl =3D InternetOpenUrlA (hi, url, NULL, 0, 0, 0))) - return display_internet_error ("unable to contact cygwin.com site, " - "InternetOpenUrl() failed", hi, NULL); + { + ret =3D display_internet_error ("unable to contact cygwin.com site, " + "InternetOpenUrl() failed", hi, NULL); + goto out_open; + } =20 /* Check the HTTP response code. */ if (!HttpQueryInfoA (hurl, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMB= ER, (void *) &rc, &rc_s, NULL)) - return display_internet_error ("HttpQueryInfo() failed", hurl, hi, NUL= L); + { + ret =3D display_internet_error ("HttpQueryInfo() failed", hurl, hi, = NULL); + goto out_open_url; + } + + if (rc !=3D HTTP_STATUS_OK) + { + sprintf (buf, "error retrieving results from cygwin.com site, " + "HTTP status code %lu", rc); + ret =3D display_internet_error (buf, hurl, hi, NULL); + goto out_open_url; + } =20 /* Fetch result and print to outstream. */ do { if (!InternetReadFile (hurl, (void *) buf, sizeof (buf), &numread)) - return display_internet_error ("InternetReadFile failed", hurl, hi, NULL); + { + ret =3D display_internet_error ("InternetReadFile failed", hurl, hi, + NULL); + goto out_open_url; + } if (numread) fwrite ((void *) buf, (size_t) numread, 1, outstream); } while (numread); =20 - if (rc !=3D HTTP_STATUS_OK) - { - sprintf (buf, "error retrieving results from cygwin.com site, " - "HTTP status code %lu", rc); - return display_internet_error (buf, hurl, hi, NULL); - } + ret =3D 0; =20 +out_open_url: InternetCloseHandle (hurl); +out_open: InternetCloseHandle (hi); - return 0; + return ret; } =20 struct passwd {