From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:35530) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sn2Gt-00087X-WC for qemu-devel@nongnu.org; Fri, 06 Jul 2012 02:44:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sn2Gp-0000Xe-1I for qemu-devel@nongnu.org; Fri, 06 Jul 2012 02:44:07 -0400 Received: from mout.web.de ([212.227.15.4]:55798) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sn2Go-0000XT-NI for qemu-devel@nongnu.org; Fri, 06 Jul 2012 02:44:02 -0400 Message-ID: <4FF6892A.8020703@web.de> Date: Fri, 06 Jul 2012 08:43:54 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1341554683-20116-1-git-send-email-riegamaths@gmail.com> In-Reply-To: <1341554683-20116-1-git-send-email-riegamaths@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigC30F8C090BEEA766C7EB7CA5" Subject: Re: [Qemu-devel] [PATCH v2] slirp: Ensure smbd and shared directory exist when enable smb List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Dunrong Huang Cc: Mark McLoughlin , Anthony Liguori , qemu-devel@nongnu.org This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigC30F8C090BEEA766C7EB7CA5 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable On 2012-07-06 08:04, Dunrong Huang wrote: > Users may pass the following parameters to qemu: > $ qemu-kvm -net nic -net user,smb=3D ... > $ qemu-kvm -net nic -net user,smb ... > $ qemu-kvm -net nic -net user,smb=3Dbad_directory ... >=20 > In these cases, qemu started successfully while samba server > failed to start. Users will confuse since samba server > failed silently without any indication of what it did wrong. >=20 > To avoid it, we check whether the shared directory exist and > if users have permission to access this directory when QEMU's > "built-in" SMB server is enabled. >=20 > Signed-off-by: Dunrong Huang > --- > net/slirp.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) >=20 > diff --git a/net/slirp.c b/net/slirp.c > index 37b6ccf..ff36fa2 100644 > --- a/net/slirp.c > +++ b/net/slirp.c > @@ -489,6 +489,18 @@ static int slirp_smb(SlirpState* s, const char *ex= ported_dir, > char smb_cmdline[128]; > FILE *f; > =20 > + if (access(CONFIG_SMBD_COMMAND, F_OK)) { > + error_report("could not find '%s', please install it", > + CONFIG_SMBD_COMMAND); > + return -1; > + } > + > + if (access(exported_dir, R_OK | X_OK)) { > + error_report("no such directory '%s', or you do not have permi= ssion " > + "to access it, please check it", exported_dir); > + return -1; > + } > + > snprintf(s->smb_dir, sizeof(s->smb_dir), "/tmp/qemu-smb.%ld-%d", > (long)getpid(), instance++); > if (mkdir(s->smb_dir, 0700) < 0) { >=20 Thanks, applied to slirp queue. I added a tiny patch on top that reports the exact error returned by access(): diff --git a/net/slirp.c b/net/slirp.c index eb80889..b82eab0 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -504,8 +504,8 @@ static int slirp_smb(SlirpState* s, const char *expor= ted_dir, } =20 if (access(exported_dir, R_OK | X_OK)) { - error_report("no such directory '%s', or you do not have permiss= ion " - "to access it, please check it", exported_dir); + error_report("error accessing shared directory '%s': %s", + exported_dir, strerror(errno)); return -1; } =20 Jan --------------enigC30F8C090BEEA766C7EB7CA5 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk/2iS4ACgkQitSsb3rl5xRG+gCgiE5UVeLLxiqmxnqBMKIDZU6y QRcAoJaIjYxQJcXGORkT7Ai1wvsMGUjs =mPLn -----END PGP SIGNATURE----- --------------enigC30F8C090BEEA766C7EB7CA5--