Use of uninitialized variable in combine_uri()
Thomas Mullaly
thomas.mullaly at gmail.com
Tue Nov 2 19:50:00 CDT 2010
Hi Gerald,
On Tue, Nov 2, 2010 at 6:51 PM, Gerald Pfeifer <gerald at pfeifer.com> wrote:
> Hi Thomas,
>
> the following change of yours
>
> commit bced2e21dbc548ef9d41e3ff11384d7ad964c929
> Author: Thomas Mullaly <thomas.mullaly at gmail.com>
> Date: Sat Oct 9 11:02:17 2010 -0400
>
> urlmon: Implemented base case for CoInternetCombineIUri.
>
> introduces a new warning, use of uninitialized variable in the line
> marked "HERE" below.
>
> +static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result
> + Uri *ret;
> + HRESULT hr;
> + parse_data data;
> +
> + /* Base case is when the relative Uri has a scheme name,
> + * if it does, then 'result' will contain the same data
> + * as the relative Uri.
> + */
> + if(relative->scheme_start > -1) {
> + DWORD create_flags = 0;
> +
> + memset(&data, 0, sizeof(parse_data));
> +
> + data.uri = SysAllocString(relative->raw_uri);
> + if(!data.uri) {
> + IUri_Release(URI(ret)); <================== HERE
> + *result = NULL;
> + return E_OUTOFMEMORY;
> + }
>
> From all I can tell this is a legitimate warning, that is, the code
> really invokes undefined behavior. Would you mind having a look?
>
> Gerald
>
Whoa! Good catch, I'll submit a new patch set here in a few minutes fixing that.
Thank you for the heads up.
--
Thomas Mullaly
thomas.mullaly at gmail.com
More information about the wine-devel
mailing list