From patchwork Mon Jul 9 15:44:07 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 169888 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 848392C0201 for ; Tue, 10 Jul 2012 01:44:35 +1000 (EST) Received: from localhost ([::1]:40435 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoG8X-00074e-E5 for incoming@patchwork.ozlabs.org; Mon, 09 Jul 2012 11:44:33 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45630) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoG8K-0006te-DU for qemu-devel@nongnu.org; Mon, 09 Jul 2012 11:44:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SoG8D-0002Ms-UF for qemu-devel@nongnu.org; Mon, 09 Jul 2012 11:44:19 -0400 Received: from david.siemens.de ([192.35.17.14]:33342) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoG8D-0002MF-Jq for qemu-devel@nongnu.org; Mon, 09 Jul 2012 11:44:13 -0400 Received: from mail1.siemens.de (localhost [127.0.0.1]) by david.siemens.de (8.13.6/8.13.6) with ESMTP id q69FiAdA023301; Mon, 9 Jul 2012 17:44:10 +0200 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id q69Fi96k014588; Mon, 9 Jul 2012 17:44:10 +0200 From: Jan Kiszka To: Anthony Liguori , qemu-devel Date: Mon, 9 Jul 2012 17:44:07 +0200 Message-Id: <927d811b282ffdf5386bd63f435c1507634ba49a.1341848645.git.jan.kiszka@siemens.com> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 192.35.17.14 Cc: Dunrong Huang Subject: [Qemu-devel] [PATCH 3/4] slirp: Ensure smbd and shared directory exist when enable smb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Dunrong Huang Users may pass the following parameters to qemu: $ qemu-kvm -net nic -net user,smb= ... $ qemu-kvm -net nic -net user,smb ... $ qemu-kvm -net nic -net user,smb=bad_directory ... 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. 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. Signed-off-by: Dunrong Huang Signed-off-by: Jan Kiszka --- net/slirp.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/net/slirp.c b/net/slirp.c index 180147e..eb80889 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -497,6 +497,18 @@ static int slirp_smb(SlirpState* s, const char *exported_dir, return -1; } + 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 permission " + "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) {