diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2018-10-22 13:31:19 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2018-10-22 13:31:19 +0000 |
| commit | 8d7ae6bdd828ec14f4680d67914200e1e421ec49 (patch) | |
| tree | 26c0e0557942902dec529177106c166afc7fb64e /usr/src/cmd | |
| parent | b0c111b3e907993d2032ef8478d3ade9e22a18ca (diff) | |
| parent | bc4c0ff1343a311cc24933908ac6c4455af09031 (diff) | |
| download | illumos-joyent-8d7ae6bdd828ec14f4680d67914200e1e421ec49.tar.gz | |
[illumos-gate merge]
commit bc4c0ff1343a311cc24933908ac6c4455af09031
9880 Race in ZFS parallel mount
commit 975041dd3b571af240661f84d186e0cd0e36217b
9873 SMB logon fails during 1st second after service start
commit ab618543cc6fc4bc273c077ef5d247961cdb29d4
8158 Want named threads API
9857 proc manpages should have LIBRARY section
commit 62f63298eba531d48f87aa8c2089298cb7821962
9881 smbd terminated by SIGABRT after smb_account_free()
Conflicts:
usr/src/uts/common/sys/thread.h
usr/src/uts/common/fs/proc/prvnops.c
usr/src/uts/common/disp/thread.c
usr/src/man/man4/proc.4
usr/src/man/man1/ps.1
usr/src/lib/libc/port/threads/thr.c
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); |
