Fix broken filename for .gcda files starting with '..' (PR gcov-profile/88994).

2019-01-24  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/88994
	* gcov-io.c (mangle_path): Do not allocate a bigger buffer,
	result will be always smaller or equal to the original.
	* gcov.c (mangle_name): Fix else branch where we should
	also copy to PTR and shift the pointer.

From-SVN: r268233
This commit is contained in:
Martin Liska 2019-01-24 09:27:39 +01:00 committed by Martin Liska
parent 07fd2247ee
commit 12502bf2e9
3 changed files with 18 additions and 8 deletions

View File

@ -1,3 +1,11 @@
2019-01-24 Martin Liska <mliska@suse.cz>
PR gcov-profile/88994
* gcov-io.c (mangle_path): Do not allocate a bigger buffer,
result will be always smaller or equal to the original.
* gcov.c (mangle_name): Fix else branch where we should
also copy to PTR and shift the pointer.
2019-01-24 Xiong Hu Luo <luoxhu@linux.vnet.ibm.com>
* tree-ssa-dom.c (test_for_singularity): fix a comment typo.

View File

@ -547,7 +547,7 @@ mangle_path (char const *base)
/* Convert '/' to '#', convert '..' to '^',
convert ':' to '~' on DOS based file system. */
const char *probe;
char *buffer = (char *)xmalloc (strlen (base) + 10);
char *buffer = (char *)xmalloc (strlen (base) + 1);
char *ptr = buffer;
#if HAVE_DOS_BASED_FILE_SYSTEM

View File

@ -2520,6 +2520,9 @@ make_gcov_file_name (const char *input_name, const char *src_name)
return result;
}
/* Mangle BASE name, copy it at the beginning of PTR buffer and
return address of the \0 character of the buffer. */
static char *
mangle_name (char const *base, char *ptr)
{
@ -2527,14 +2530,13 @@ mangle_name (char const *base, char *ptr)
/* Generate the source filename part. */
if (!flag_preserve_paths)
{
base = lbasename (base);
len = strlen (base);
memcpy (ptr, base, len);
ptr += len;
}
base = lbasename (base);
else
ptr = mangle_path (base);
base = mangle_path (base);
len = strlen (base);
memcpy (ptr, base, len);
ptr += len;
return ptr;
}