diff options
Diffstat (limited to 'usr/src/cmd')
| -rw-r--r-- | usr/src/cmd/halt/Makefile | 5 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/libconv/Makefile.com | 6 | ||||
| -rw-r--r-- | usr/src/cmd/smbsrv/smbd/smbd_authsvc.c | 10 | ||||
| -rw-r--r-- | usr/src/cmd/smbsrv/smbd/smbd_logon.c | 23 | ||||
| -rw-r--r-- | usr/src/cmd/smbsrv/smbd/smbd_ntlmssp.c | 12 | ||||
| -rw-r--r-- | usr/src/cmd/svc/startd/graph.c | 2 |
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); |
