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 -
|
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).
|
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.
|
Propagate test mode to clvmd to skip activation and changes to held locks.
|
||||||
Defer writing PV labels to vg_write.
|
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;
|
int i, num;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
char hostname[255];
|
char hostname[255];
|
||||||
|
char *p;
|
||||||
struct flock lock = {
|
struct flock lock = {
|
||||||
.l_type = F_WRLCK,
|
.l_type = F_WRLCK,
|
||||||
.l_whence = 0,
|
.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", "");
|
log_sys_error("gethostname", "");
|
||||||
strcpy(hostname, "nohostname");
|
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++) {
|
for (i = 0; i < 20; i++, num++) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user