mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Fix create_temp_name to replace any '/' found in the hostname with '?'.
There's a possibility someone will use the '/' in the hostname. Since we generate a temporary file name (path) including the hostname, any '/' would be ambiguous. We can always set such hostname using 'sethostname' from unistd.h. But the 'hostname' command already includes the check and removes the '/' char. However, some old versions still allow that. See: https://bugzilla.redhat.com/show_bug.cgi?id=711445. Since this is only a temporary name and the possibility of this error is quite negligible, we don't need any complex escape sequence here, just a simple char replace.
This commit is contained in:
parent
bb056af3c9
commit
afc8a3b104
@ -1,5 +1,6 @@
|
||||
Version 2.02.86 -
|
||||
=================================
|
||||
Fix create_temp_name to replace any '/' found in the hostname with '?'.
|
||||
Always use append to file in lvmdump (selinux policy - no file truncation).
|
||||
Propagate test mode to clvmd to skip activation and changes to held locks.
|
||||
Defer writing PV labels to vg_write.
|
||||
|
@ -35,6 +35,7 @@ int create_temp_name(const char *dir, char *buffer, size_t len, int *fd,
|
||||
int i, num;
|
||||
pid_t pid;
|
||||
char hostname[255];
|
||||
char *p;
|
||||
struct flock lock = {
|
||||
.l_type = F_WRLCK,
|
||||
.l_whence = 0,
|
||||
@ -48,6 +49,12 @@ int create_temp_name(const char *dir, char *buffer, size_t len, int *fd,
|
||||
log_sys_error("gethostname", "");
|
||||
strcpy(hostname, "nohostname");
|
||||
}
|
||||
else {
|
||||
/* Replace any '/' with '?' found in the hostname. */
|
||||
p = hostname;
|
||||
while ((p = strchr(p, '/')))
|
||||
*p = '?';
|
||||
}
|
||||
|
||||
for (i = 0; i < 20; i++, num++) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user