40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
|
References: bsc#932267
|
||
|
|
||
|
Subject: slirp: use less predictable directory name in /tmp for smb config (CVE-2015-4037)
|
||
|
From: Michael Tokarev mjt@tls.msk.ru Thu May 28 14:12:26 2015 +0300
|
||
|
Date: Wed Jun 3 14:21:45 2015 +0300:
|
||
|
Git: 8b8f1c7e9ddb2e88a144638f6527bf70e32343e3
|
||
|
|
||
|
In this version I used mkdtemp(3) which is:
|
||
|
|
||
|
_BSD_SOURCE
|
||
|
|| /* Since glibc 2.10: */
|
||
|
(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
|
||
|
|
||
|
(POSIX.1-2008), so should be available on systems we care about.
|
||
|
|
||
|
While at it, reset the resulting directory name within smb structure
|
||
|
on error so cleanup function wont try to remove directory which we
|
||
|
failed to create.
|
||
|
|
||
|
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||
|
Reviewed-by: Markus Armbruster <armbru@redhat.com>
|
||
|
|
||
|
Index: xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.c
|
||
|
===================================================================
|
||
|
--- xen-4.5.1-testing.orig/tools/qemu-xen-traditional-dir-remote/net.c
|
||
|
+++ xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.c
|
||
|
@@ -624,9 +624,10 @@ void net_slirp_smb(const char *exported_
|
||
|
}
|
||
|
|
||
|
/* XXX: better tmp dir construction */
|
||
|
- snprintf(smb_dir, sizeof(smb_dir), "/tmp/qemu-smb.%d", getpid());
|
||
|
- if (mkdir(smb_dir, 0700) < 0) {
|
||
|
+ snprintf(smb_dir, sizeof(smb_dir), "/tmp/qemu-smb.XXXXXX");
|
||
|
+ if (!mkdtemp(smb_dir)) {
|
||
|
fprintf(stderr, "qemu: could not create samba server dir '%s'\n", smb_dir);
|
||
|
+ smb_dir[0] = 0;
|
||
|
exit(1);
|
||
|
}
|
||
|
snprintf(smb_conf, sizeof(smb_conf), "%s/%s", smb_dir, "smb.conf");
|