Add smb_available() sanity checks
authorTurbo Fredriksson <turbo@bayour.com>
Tue, 2 Apr 2013 16:27:52 +0000 (09:27 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 2 Apr 2013 16:27:52 +0000 (09:27 -0700)
Do basic sanity checks in smb_available() to verify that the 'net'
command and the usershare directory exists.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1124

lib/libshare/smb.c

index e34d142..a545bfb 100644 (file)
@@ -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;
 }