Building full path name in test utilities should use memmove instead of strcpy because it is
possible that an original path name should overlap itself when moving the path.
SVN-Revision: 4040
j++;
}
testprogdir[i] = '\0';
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ if (testprogdir[0] != '/' && testprogdir[0] != '\\' &&
+ !(((testprogdir[0] >= 'a' && testprogdir[0] <= 'z') ||
+ (testprogdir[0] >= 'A' && testprogdir[0] <= 'Z')) &&
+ testprogdir[1] == ':' &&
+ (testprogdir[2] == '/' || testprogdir[2] == '\\')))
+#else
if (testprogdir[0] != '/')
+#endif
{
/* Fixup path for relative directories. */
if ((testprogdir = (char *)realloc(testprogdir,
fprintf(stderr, "ERROR: Out of memory.");
exit(1);
}
- strcpy(testprogdir + strlen(pwd) + 1, testprogdir);
- strcpy(testprogdir, pwd);
+ memmove(testprogdir + strlen(pwd) + 1, testprogdir,
+ strlen(testprogdir));
+ memcpy(testprogdir, pwd, strlen(pwd));
testprogdir[strlen(pwd)] = '/';
}
j++;
}
testprogdir[i] = '\0';
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ if (testprogdir[0] != '/' && testprogdir[0] != '\\' &&
+ !(((testprogdir[0] >= 'a' && testprogdir[0] <= 'z') ||
+ (testprogdir[0] >= 'A' && testprogdir[0] <= 'Z')) &&
+ testprogdir[1] == ':' &&
+ (testprogdir[2] == '/' || testprogdir[2] == '\\')))
+#else
if (testprogdir[0] != '/')
+#endif
{
/* Fixup path for relative directories. */
if ((testprogdir = (char *)realloc(testprogdir,
fprintf(stderr, "ERROR: Out of memory.");
exit(1);
}
- strcpy(testprogdir + strlen(pwd) + 1, testprogdir);
- strcpy(testprogdir, pwd);
+ memmove(testprogdir + strlen(pwd) + 1, testprogdir,
+ strlen(testprogdir));
+ memcpy(testprogdir, pwd, strlen(pwd));
testprogdir[strlen(pwd)] = '/';
}
j++;
}
testprogdir[i] = '\0';
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ if (testprogdir[0] != '/' && testprogdir[0] != '\\' &&
+ !(((testprogdir[0] >= 'a' && testprogdir[0] <= 'z') ||
+ (testprogdir[0] >= 'A' && testprogdir[0] <= 'Z')) &&
+ testprogdir[1] == ':' &&
+ (testprogdir[2] == '/' || testprogdir[2] == '\\')))
+#else
if (testprogdir[0] != '/')
+#endif
{
/* Fixup path for relative directories. */
if ((testprogdir = (char *)realloc(testprogdir,
fprintf(stderr, "ERROR: Out of memory.");
exit(1);
}
- strcpy(testprogdir + strlen(pwd) + 1, testprogdir);
- strcpy(testprogdir, pwd);
+ memmove(testprogdir + strlen(pwd) + 1, testprogdir,
+ strlen(testprogdir));
+ memcpy(testprogdir, pwd, strlen(pwd));
testprogdir[strlen(pwd)] = '/';
}