summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTurbo Fredriksson <[email protected]>2013-04-02 09:27:52 -0700
committerBrian Behlendorf <[email protected]>2013-04-02 09:27:52 -0700
commitbe8bc8c0d3ff16888f046e8523051b514ad285e0 (patch)
tree7e7e8889b2f37c7dfbe1452f5e7129a9dfaf1376
parentb5d8c5fb08d596d598d86afce479be7e8b9bc700 (diff)
Add smb_available() sanity checks
Do basic sanity checks in smb_available() to verify that the 'net' command and the usershare directory exists. Signed-off-by: Brian Behlendorf <[email protected]> Closes #1124
-rw-r--r--lib/libshare/smb.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/libshare/smb.c b/lib/libshare/smb.c
index e34d14259..a545bfb0f 100644
--- a/lib/libshare/smb.c
+++ b/lib/libshare/smb.c
@@ -423,7 +423,15 @@ static const sa_share_ops_t smb_shareops = {
static boolean_t
smb_available(void)
{
- /* TODO: Sanity check NET_CMD_PATH and SHARE_DIR */
+ struct stat statbuf;
+
+ if (lstat(SHARE_DIR, &statbuf) != 0 ||
+ !S_ISDIR(statbuf.st_mode))
+ return B_FALSE;
+
+ if (access(NET_CMD_PATH, F_OK) != 0)
+ return B_FALSE;
+
return B_TRUE;
}