diff options
| -rw-r--r-- | source4/lib/samba3/smbpasswd.c | 139 | 
1 files changed, 0 insertions, 139 deletions
diff --git a/source4/lib/samba3/smbpasswd.c b/source4/lib/samba3/smbpasswd.c index 39e2448b98..47c826f9df 100644 --- a/source4/lib/samba3/smbpasswd.c +++ b/source4/lib/samba3/smbpasswd.c @@ -204,142 +204,3 @@ char *smbpasswd_encode_acb_info(TALLOC_CTX *mem_ctx, uint16_t acb_info)  	return acct_str;  }      - -NTSTATUS samba3_read_smbpasswd(const char *filename, TALLOC_CTX *ctx, struct samba3_samaccount **accounts, uint32_t *count) -{ -	int numlines; -	char **lines; -	int i; - -	*count = 0; -	*accounts = NULL; - -	lines = file_lines_load(filename, &numlines, ctx); - -	if (lines == NULL) { -		DEBUG(0, ("Unable to load lines from %s\n", filename)); -		return NT_STATUS_UNSUCCESSFUL; -	} - -	*accounts = talloc_array(ctx, struct samba3_samaccount, numlines); - -	for (i = 0; i < numlines; i++) { -		char *p = lines[i], *q; -		uid_t uid; -		struct samba3_samaccount *acc = &((*accounts)[*count]); - -		if (p[0] == '\0' || p[0] == '#') -			continue; - -		ZERO_STRUCTP(acc); - -		q = strchr(p, ':'); -		if (!q) { -			DEBUG(0, ("%s:%d: expected ':'\n", filename, i)); -			continue; -		} - -		acc->username = talloc_strndup(ctx, p, PTR_DIFF(q, p)); -		p = q+1; - -		uid = atoi(p); -		 -		/* uid is ignored here.. */ - -		q = strchr(p, ':'); -		if (!q) { -			DEBUG(0, ("%s:%d: expected ':'\n", filename, i)); -			continue; -		} -		p = q+1; - -		if (strlen(p) < 33) { -			DEBUG(0, ("%s:%d: expected 32 byte password blob\n", filename, i)); -			continue; -		} - -		if (!strncmp(p, "NO PASSWORD", strlen("NO PASSWORD"))) { -			acc->acct_ctrl |= ACB_PWNOTREQ; -		} else if (p[0] == '*' || p[0] == 'X') { -			/* No password set */ -		} else { -			struct samr_Password *pw = smbpasswd_gethexpwd(*accounts, p); -			 -			if (!pw) { -				DEBUG(0, ("%s:%d: Malformed LM pw entry\n", filename, i)); -				continue; -			} - -			memcpy(acc->lm_pw.hash, pw, sizeof(*pw)); -		} - -		if (p[32] != ':') { -			DEBUG(0, ("%s:%d: expected ':' after 32 byte password blob\n", filename, i)); -			continue; -		} - -		p += 33; -		 -		if (p[0] == '*' || p[0] == 'X') { -			/* No password set */ -		} else { -			struct samr_Password *pw = smbpasswd_gethexpwd(*accounts, p); -			 -			if (!pw) { -				DEBUG(0, ("%s:%d: Malformed LM pw entry\n", filename, i)); -				continue; -			} - -			memcpy(acc->nt_pw.hash, pw, sizeof(*pw)); -		} -		 -		if (p[32] != ':') { -			DEBUG(0, ("%s:%d: expected ':' after 32 byte password blob\n", filename, i)); -			continue; -		} - -		p += 33; - -		if (p[0] == '[') { -			q = strchr(p, ']'); -			if (!q) { -				DEBUG(0, ("%s:%d: expected ']'\n", filename, i)); -				continue; -			} -			 -			acc->acct_ctrl |= smbpasswd_decode_acb_info(p); - -			p = q+1; -			if (p[0] == ':' && strncmp(p, "LCT-", 4) == 0) { -				int j; -				p += 4; - -				for(j = 0; j < 8; j++) { -					if(p[j] == '\0' || !isxdigit(p[j])) { -						break; -					} -				} -				if(i == 8) { -					acc->pass_last_set_time = (time_t)strtol((char *)p, NULL, 16); -				} -			} -		} else { -			/* 'Old' style file. Fake up based on user name. */ -			/* -			 * Currently trust accounts are kept in the same -			 * password file as 'normal accounts'. If this changes -			 * we will have to fix this code. JRA. -			 */ -			if(acc->username[strlen(acc->username) - 1] == '$') { -				acc->acct_ctrl &= ~ACB_NORMAL; -				acc->acct_ctrl |= ACB_WSTRUST; -			} -		} - -		(*count)++; -	} - -	talloc_free(lines); - -	return NT_STATUS_OK; -}  | 
