Commit 6e718159 by Martin Sebor Committed by Martin Sebor

re PR c/81117 (Improve buffer overflow checking in strncpy)


gcc/ChangeLog:

	PR c/81117
	* config/darwin-c.c (framework_construct_pathname): Replace strncpy
	with memcpy.
	(find_subframework_file): Same.

From-SVN: r254641
parent f382ac6d
2017-11-10 Martin Sebor <msebor@redhat.com>
PR c/81117
* config/darwin-c.c (framework_construct_pathname): Replace strncpy
with memcpy.
(find_subframework_file): Same.
2017-11-10 Jeff Law <law@redhat.com> 2017-11-10 Jeff Law <law@redhat.com>
* vr-values.h (VR_INITIALIZER): Move #define here. * vr-values.h (VR_INITIALIZER): Move #define here.
...@@ -284,13 +284,13 @@ framework_construct_pathname (const char *fname, cpp_dir *dir) ...@@ -284,13 +284,13 @@ framework_construct_pathname (const char *fname, cpp_dir *dir)
frname = XNEWVEC (char, strlen (fname) + dir->len + 2 frname = XNEWVEC (char, strlen (fname) + dir->len + 2
+ strlen(".framework/") + strlen("PrivateHeaders")); + strlen(".framework/") + strlen("PrivateHeaders"));
strncpy (&frname[0], dir->name, dir->len); memcpy (&frname[0], dir->name, dir->len);
frname_len = dir->len; frname_len = dir->len;
if (frname_len && frname[frname_len-1] != '/') if (frname_len && frname[frname_len-1] != '/')
frname[frname_len++] = '/'; frname[frname_len++] = '/';
strncpy (&frname[frname_len], fname, fname_len); memcpy (&frname[frname_len], fname, fname_len);
frname_len += fname_len; frname_len += fname_len;
strncpy (&frname[frname_len], ".framework/", strlen (".framework/")); memcpy (&frname[frname_len], ".framework/", strlen (".framework/"));
frname_len += strlen (".framework/"); frname_len += strlen (".framework/");
if (fast_dir == 0) if (fast_dir == 0)
...@@ -316,7 +316,7 @@ framework_construct_pathname (const char *fname, cpp_dir *dir) ...@@ -316,7 +316,7 @@ framework_construct_pathname (const char *fname, cpp_dir *dir)
/* Append framework_header_dirs and header file name */ /* Append framework_header_dirs and header file name */
for (i = 0; framework_header_dirs[i].dirName; i++) for (i = 0; framework_header_dirs[i].dirName; i++)
{ {
strncpy (&frname[frname_len], memcpy (&frname[frname_len],
framework_header_dirs[i].dirName, framework_header_dirs[i].dirName,
framework_header_dirs[i].dirNameLen); framework_header_dirs[i].dirNameLen);
strcpy (&frname[frname_len + framework_header_dirs[i].dirNameLen], strcpy (&frname[frname_len + framework_header_dirs[i].dirNameLen],
...@@ -378,23 +378,23 @@ find_subframework_file (const char *fname, const char *pname) ...@@ -378,23 +378,23 @@ find_subframework_file (const char *fname, const char *pname)
sfrname_len = bufptr - pname; sfrname_len = bufptr - pname;
strncpy (&sfrname[0], pname, sfrname_len); memcpy (&sfrname[0], pname, sfrname_len);
strncpy (&sfrname[sfrname_len], "Frameworks/", strlen ("Frameworks/")); memcpy (&sfrname[sfrname_len], "Frameworks/", strlen ("Frameworks/"));
sfrname_len += strlen("Frameworks/"); sfrname_len += strlen("Frameworks/");
strncpy (&sfrname[sfrname_len], fname, fname_len); memcpy (&sfrname[sfrname_len], fname, fname_len);
sfrname_len += fname_len; sfrname_len += fname_len;
strncpy (&sfrname[sfrname_len], ".framework/", strlen (".framework/")); memcpy (&sfrname[sfrname_len], ".framework/", strlen (".framework/"));
sfrname_len += strlen (".framework/"); sfrname_len += strlen (".framework/");
/* Append framework_header_dirs and header file name */ /* Append framework_header_dirs and header file name */
for (i = 0; framework_header_dirs[i].dirName; i++) for (i = 0; framework_header_dirs[i].dirName; i++)
{ {
strncpy (&sfrname[sfrname_len], memcpy (&sfrname[sfrname_len],
framework_header_dirs[i].dirName, framework_header_dirs[i].dirName,
framework_header_dirs[i].dirNameLen); framework_header_dirs[i].dirNameLen);
strcpy (&sfrname[sfrname_len + framework_header_dirs[i].dirNameLen], strcpy (&sfrname[sfrname_len + framework_header_dirs[i].dirNameLen],
&fname[fname_len]); &fname[fname_len]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment