resrc: sprintf sanitizer null destination pointer

* resrc.c (read_rc_file): Use stpcpy rather than sprintf
	followed by strlen.  Tidy.
This commit is contained in:
Alan Modra
2023-08-03 08:18:13 +09:30
parent e2e7c52613
commit 137f6bc0da

View File

@@ -441,29 +441,23 @@ read_rc_file (const char *filename, const char *preprocessor,
{
char *edit, *dir;
if (filename[0] == '/'
|| filename[0] == '\\'
|| filename[1] == ':')
/* Absolute path. */
edit = dir = xstrdup (filename);
else
edit = dir = xmalloc (strlen (filename) + 3);
if (filename[0] != '/'
&& filename[0] != '\\'
&& filename[1] != ':')
{
/* Relative path. */
edit = dir = xmalloc (strlen (filename) + 3);
sprintf (dir, "./%s", filename);
*edit++ = '.';
*edit++ = '/';
}
edit = stpcpy (edit, filename);
/* Walk dir backwards stopping at the first directory separator. */
edit += strlen (dir);
while (edit > dir && (edit[-1] != '\\' && edit[-1] != '/'))
{
--edit;
edit[0] = 0;
}
--edit;
/* Cut off trailing slash. */
--edit;
edit[0] = 0;
*--edit = 0;
/* Convert all back slashes to forward slashes. */
while ((edit = strchr (dir, '\\')) != NULL)