Re: windres: don't exit so much on errors in read_coff_rsrc

oss-fuzz found that I missed some error paths in commit 9e68cae4fd.
This fix prevents reads of a NULL pointer in sort_resources.

	* rescoff.c (read_coff_res_dir): Check return of recursive calls
	and read_coff_data_entry calls.  Pass failures up the call chain.
This commit is contained in:
Alan Modra
2025-08-19 09:15:22 +09:30
parent c022c51376
commit 74201a3208

View File

@@ -308,6 +308,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
re->subdir = 1;
re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo,
type, level + 1);
if (re->u.dir == NULL)
return NULL;
}
else
{
@@ -319,6 +321,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
re->subdir = 0;
re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva,
flaginfo, type);
if (re->u.res == NULL)
return NULL;
}
*pp = re;
@@ -359,6 +363,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
re->subdir = 1;
re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo,
type, level + 1);
if (re->u.dir == NULL)
return NULL;
}
else
{
@@ -370,6 +376,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
re->subdir = 0;
re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva,
flaginfo, type);
if (re->u.res == NULL)
return NULL;
}
*pp = re;