summaryrefslogtreecommitdiff
path: root/usr/src/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd')
-rw-r--r--usr/src/cmd/halt/Makefile5
-rw-r--r--usr/src/cmd/sgs/libconv/Makefile.com6
-rw-r--r--usr/src/cmd/smbsrv/smbd/smbd_authsvc.c10
-rw-r--r--usr/src/cmd/smbsrv/smbd/smbd_logon.c23
-rw-r--r--usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c12
-rw-r--r--usr/src/cmd/svc/startd/graph.c2
6 files changed, 44 insertions, 14 deletions
diff --git a/usr/src/cmd/halt/Makefile b/usr/src/cmd/halt/Makefile
index 98d8eccee4..a515a0a1ef 100644
--- a/usr/src/cmd/halt/Makefile
+++ b/usr/src/cmd/halt/Makefile
@@ -21,6 +21,7 @@
# Copyright 2016 Toomas Soome <tsoome@me.com>
# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
+# Copyright 2018 Joyent, Inc.
#
PROG = halt
@@ -60,10 +61,10 @@ install := TARGET = install
clean := TARGET = clean
clobber := TARGET = clobber
lint := TARGET = lint
-lint := LINTFLAGS = -u
+lint := LINTFLAGS += -u
-all: $(PROG)
+all: $(PROG)
install: all $(ROOTUSRSBINPROG) $(ROOTLINKS) $(ROOTSYMLINKS) $(SUBDIRS)
diff --git a/usr/src/cmd/sgs/libconv/Makefile.com b/usr/src/cmd/sgs/libconv/Makefile.com
index c6287c433c..1bb482f706 100644
--- a/usr/src/cmd/sgs/libconv/Makefile.com
+++ b/usr/src/cmd/sgs/libconv/Makefile.com
@@ -21,7 +21,7 @@
#
# Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2018, Joyent, Inc.
+# Copyright 2018 Joyent, Inc.
#
LIBRARY = libconv.a
@@ -124,8 +124,8 @@ $(LINTOUT64) := LDLIBS += -ldemangle-sys
SGSMSGTARG= $(BLTOBJS:%_msg.o=../common/%.msg)
-LINTFLAGS += -u
-LINTFLAGS64 += -u
+LINTFLAGS += -u -erroff=E_NAME_DECL_NOT_USED_DEF2
+LINTFLAGS64 += -u -erroff=E_NAME_DECL_NOT_USED_DEF2
CLEANFILES += $(BLTDATA) $(LINTOUTS) bld_vernote vernote.s
CLOBBERFILES += $(LINTLIBS)
diff --git a/usr/src/cmd/smbsrv/smbd/smbd_authsvc.c b/usr/src/cmd/smbsrv/smbd/smbd_authsvc.c
index 0b6af80bd8..b507148b72 100644
--- a/usr/src/cmd/smbsrv/smbd/smbd_authsvc.c
+++ b/usr/src/cmd/smbsrv/smbd/smbd_authsvc.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -549,8 +549,12 @@ smbd_authsvc_oldreq(authsvc_context_t *ctx)
token = smbd_user_auth_logon(&user_info);
xdr_free(smb_logon_xdr, (char *)&user_info);
- if (token == NULL)
- return (NT_STATUS_ACCESS_DENIED);
+ if (token == NULL) {
+ rc = user_info.lg_status;
+ if (rc == 0) /* should not happen */
+ rc = NT_STATUS_INTERNAL_ERROR;
+ return (rc);
+ }
ctx->ctx_token = token;
diff --git a/usr/src/cmd/smbsrv/smbd/smbd_logon.c b/usr/src/cmd/smbsrv/smbd/smbd_logon.c
index ab6d4c2f7e..69b32b2ec9 100644
--- a/usr/src/cmd/smbsrv/smbd/smbd_logon.c
+++ b/usr/src/cmd/smbsrv/smbd/smbd_logon.c
@@ -77,6 +77,8 @@ static smb_audit_t *smbd_audit_unlink(uint32_t);
/*
* Invoked at user logon due to SmbSessionSetupX. Authenticate the
* user, start an audit session and audit the event.
+ *
+ * On error, returns NULL, and status in user_info->lg_status
*/
smb_token_t *
smbd_user_auth_logon(smb_logon_t *user_info)
@@ -101,9 +103,16 @@ smbd_user_auth_logon(smb_logon_t *user_info)
if (user_info->lg_username == NULL ||
user_info->lg_domain == NULL ||
user_info->lg_workstation == NULL) {
+ user_info->lg_status = NT_STATUS_INVALID_PARAMETER;
return (NULL);
}
+ /*
+ * Avoid modifying the caller-provided struct because it
+ * may or may not point to allocated strings etc.
+ * Copy to tmp_user, auth, then copy the (out) lg_status
+ * member back to the caller-provided struct.
+ */
tmp_user = *user_info;
if (tmp_user.lg_username[0] == '\0') {
tmp_user.lg_flags |= SMB_ATF_ANON;
@@ -126,7 +135,12 @@ smbd_user_auth_logon(smb_logon_t *user_info)
tmp_user.lg_e_domain = tmp_user.lg_domain;
}
- if ((token = smb_logon(&tmp_user)) == NULL) {
+ token = smb_logon(&tmp_user);
+ user_info->lg_status = tmp_user.lg_status;
+
+ if (token == NULL) {
+ if (user_info->lg_status == 0) /* should not happen */
+ user_info->lg_status = NT_STATUS_INTERNAL_ERROR;
uid = ADT_NO_ATTRIB;
gid = ADT_NO_ATTRIB;
sid = NT_NULL_SIDSTR;
@@ -147,12 +161,14 @@ smbd_user_auth_logon(smb_logon_t *user_info)
if (adt_start_session(&ah, NULL, 0)) {
syslog(LOG_AUTH | LOG_ALERT, "adt_start_session: %m");
+ user_info->lg_status = NT_STATUS_AUDIT_FAILED;
goto errout;
}
if ((event = adt_alloc_event(ah, ADT_smbd_session)) == NULL) {
syslog(LOG_AUTH | LOG_ALERT,
"adt_alloc_event(ADT_smbd_session): %m");
+ user_info->lg_status = NT_STATUS_AUDIT_FAILED;
goto errout;
}
@@ -172,6 +188,7 @@ smbd_user_auth_logon(smb_logon_t *user_info)
if (adt_set_user(ah, uid, gid, uid, gid, NULL, ADT_NEW)) {
syslog(LOG_AUTH | LOG_ALERT, "adt_set_user: %m");
adt_free_event(event);
+ user_info->lg_status = NT_STATUS_AUDIT_FAILED;
goto errout;
}
@@ -187,6 +204,8 @@ smbd_user_auth_logon(smb_logon_t *user_info)
if (token) {
if ((entry = malloc(sizeof (smb_audit_t))) == NULL) {
syslog(LOG_ERR, "smbd_user_auth_logon: %m");
+ user_info->lg_status =
+ NT_STATUS_INSUFFICIENT_RESOURCES;
goto errout;
}
@@ -199,6 +218,8 @@ smbd_user_auth_logon(smb_logon_t *user_info)
smb_autohome_add(token);
smbd_audit_link(entry);
token->tkn_audit_sid = entry->sa_audit_sid;
+
+ user_info->lg_status = NT_STATUS_SUCCESS;
}
free(buf);
diff --git a/usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c b/usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c
index 8027e3272b..80deababfa 100644
--- a/usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c
+++ b/usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -36,8 +36,8 @@
#define letohl(x) ((uint32_t)(x))
#else /* (BYTE_ORDER == LITTLE_ENDIAN) */
/* little-endian values on big-endian (swap) */
-#define letohl(x) BSWAP_32(x)
-#define htolel(x) BSWAP_32(x)
+#define letohl(x) BSWAP_32(x)
+#define htolel(x) BSWAP_32(x)
#endif /* (BYTE_ORDER == LITTLE_ENDIAN) */
typedef struct ntlmssp_backend {
@@ -256,7 +256,7 @@ smbd_ntlmssp_negotiate(authsvc_context_t *ctx)
NTLMSSP_MSGTYPE_CHALLENGE, /* 8: type (l) */
0, 0, 0, /* filled later: 12: target name (wwl) */
be->srv_flags, /* 20: flags (l) */
- be->srv_challenge, /* 24: (8c) */
+ be->srv_challenge, /* 24: (8c) */
0, 0, /* 32: reserved (ll) */
0, 0, 0); /* filled later: 40: target info (wwl) */
#define TARGET_NAME_OFFSET 12
@@ -489,7 +489,9 @@ smbd_ntlmssp_authenticate(authsvc_context_t *ctx)
*/
token = smbd_user_auth_logon(&user_info);
if (token == NULL) {
- status = NT_STATUS_ACCESS_DENIED;
+ status = user_info.lg_status;
+ if (status == 0) /* should not happen */
+ status = NT_STATUS_INTERNAL_ERROR;
goto errout;
}
diff --git a/usr/src/cmd/svc/startd/graph.c b/usr/src/cmd/svc/startd/graph.c
index fa5cbed73a..0361d5ae4f 100644
--- a/usr/src/cmd/svc/startd/graph.c
+++ b/usr/src/cmd/svc/startd/graph.c
@@ -6822,6 +6822,8 @@ repository_event_thread(void *unused)
(void) pthread_setname_np(pthread_self(), "repository_event");
+ (void) pthread_setname_np(pthread_self(), "repository_event");
+
h = libscf_handle_create_bound_loop();
pg = safe_scf_pg_create(h);