memcredp 764 source3/winbindd/winbindd_cred_cache.c static NTSTATUS store_memory_creds(struct WINBINDD_MEMORY_CREDS *memcredp,
memcredp 774 source3/winbindd/winbindd_cred_cache.c memcredp->len = NT_HASH_LEN + LM_HASH_LEN;
memcredp 776 source3/winbindd/winbindd_cred_cache.c memcredp->len += strlen(pass)+1;
memcredp 784 source3/winbindd/winbindd_cred_cache.c memcredp->nt_hash = SMB_MALLOC_ARRAY(unsigned char, memcredp->len);
memcredp 787 source3/winbindd/winbindd_cred_cache.c memcredp->nt_hash = SMB_MEMALIGN_ARRAY(unsigned char,
memcredp 788 source3/winbindd/winbindd_cred_cache.c getpagesize(), memcredp->len);
memcredp 790 source3/winbindd/winbindd_cred_cache.c if (!memcredp->nt_hash) {
memcredp 793 source3/winbindd/winbindd_cred_cache.c memset(memcredp->nt_hash, 0x0, memcredp->len);
memcredp 795 source3/winbindd/winbindd_cred_cache.c memcredp->lm_hash = memcredp->nt_hash + NT_HASH_LEN;
memcredp 798 source3/winbindd/winbindd_cred_cache.c DEBUG(10,("mlocking memory: %p\n", memcredp->nt_hash));
memcredp 800 source3/winbindd/winbindd_cred_cache.c if ((mlock(memcredp->nt_hash, memcredp->len)) == -1) {
memcredp 803 source3/winbindd/winbindd_cred_cache.c SAFE_FREE(memcredp->nt_hash);
memcredp 808 source3/winbindd/winbindd_cred_cache.c DEBUG(10,("mlocked memory: %p\n", memcredp->nt_hash));
memcredp 812 source3/winbindd/winbindd_cred_cache.c E_md4hash(pass, memcredp->nt_hash);
memcredp 813 source3/winbindd/winbindd_cred_cache.c E_deshash(pass, memcredp->lm_hash);
memcredp 816 source3/winbindd/winbindd_cred_cache.c memcredp->pass = (char *)memcredp->lm_hash + LM_HASH_LEN;
memcredp 817 source3/winbindd/winbindd_cred_cache.c memcpy(memcredp->pass, pass,
memcredp 818 source3/winbindd/winbindd_cred_cache.c memcredp->len - NT_HASH_LEN - LM_HASH_LEN);
memcredp 829 source3/winbindd/winbindd_cred_cache.c static NTSTATUS delete_memory_creds(struct WINBINDD_MEMORY_CREDS *memcredp)
memcredp 834 source3/winbindd/winbindd_cred_cache.c if (munlock(memcredp->nt_hash, memcredp->len) == -1) {
memcredp 839 source3/winbindd/winbindd_cred_cache.c memset(memcredp->nt_hash, '\0', memcredp->len);
memcredp 840 source3/winbindd/winbindd_cred_cache.c SAFE_FREE(memcredp->nt_hash);
memcredp 841 source3/winbindd/winbindd_cred_cache.c memcredp->nt_hash = NULL;
memcredp 842 source3/winbindd/winbindd_cred_cache.c memcredp->lm_hash = NULL;
memcredp 843 source3/winbindd/winbindd_cred_cache.c memcredp->pass = NULL;
memcredp 844 source3/winbindd/winbindd_cred_cache.c memcredp->len = 0;
memcredp 853 source3/winbindd/winbindd_cred_cache.c static NTSTATUS winbindd_replace_memory_creds_internal(struct WINBINDD_MEMORY_CREDS *memcredp,
memcredp 856 source3/winbindd/winbindd_cred_cache.c NTSTATUS status = delete_memory_creds(memcredp);
memcredp 860 source3/winbindd/winbindd_cred_cache.c return store_memory_creds(memcredp, pass);
memcredp 876 source3/winbindd/winbindd_cred_cache.c struct WINBINDD_MEMORY_CREDS *memcredp = NULL;
memcredp 878 source3/winbindd/winbindd_cred_cache.c memcredp = find_memory_creds_by_name(username);
memcredp 885 source3/winbindd/winbindd_cred_cache.c if (memcredp) {
memcredp 887 source3/winbindd/winbindd_cred_cache.c if (uid != memcredp->uid) {
memcredp 892 source3/winbindd/winbindd_cred_cache.c (unsigned int)memcredp->uid));
memcredp 893 source3/winbindd/winbindd_cred_cache.c memcredp->uid = uid;
memcredp 895 source3/winbindd/winbindd_cred_cache.c memcredp->ref_count++;
memcredp 898 source3/winbindd/winbindd_cred_cache.c username, memcredp->ref_count));
memcredp 899 source3/winbindd/winbindd_cred_cache.c return winbindd_replace_memory_creds_internal(memcredp, pass);
memcredp 902 source3/winbindd/winbindd_cred_cache.c memcredp = TALLOC_ZERO_P(NULL, struct WINBINDD_MEMORY_CREDS);
memcredp 903 source3/winbindd/winbindd_cred_cache.c if (!memcredp) {
memcredp 906 source3/winbindd/winbindd_cred_cache.c memcredp->username = talloc_strdup(memcredp, username);
memcredp 907 source3/winbindd/winbindd_cred_cache.c if (!memcredp->username) {
memcredp 908 source3/winbindd/winbindd_cred_cache.c talloc_destroy(memcredp);
memcredp 912 source3/winbindd/winbindd_cred_cache.c status = store_memory_creds(memcredp, pass);
memcredp 914 source3/winbindd/winbindd_cred_cache.c talloc_destroy(memcredp);
memcredp 918 source3/winbindd/winbindd_cred_cache.c memcredp->uid = uid;
memcredp 919 source3/winbindd/winbindd_cred_cache.c memcredp->ref_count = 1;
memcredp 920 source3/winbindd/winbindd_cred_cache.c DLIST_ADD(memory_creds_list, memcredp);
memcredp 949 source3/winbindd/winbindd_cred_cache.c struct WINBINDD_MEMORY_CREDS *memcredp = NULL;
memcredp 950 source3/winbindd/winbindd_cred_cache.c memcredp = find_memory_creds_by_name(username);
memcredp 951 source3/winbindd/winbindd_cred_cache.c if (memcredp) {
memcredp 952 source3/winbindd/winbindd_cred_cache.c entry->cred_ptr = memcredp;
memcredp 965 source3/winbindd/winbindd_cred_cache.c struct WINBINDD_MEMORY_CREDS *memcredp = NULL;
memcredp 969 source3/winbindd/winbindd_cred_cache.c memcredp = find_memory_creds_by_name(username);
memcredp 972 source3/winbindd/winbindd_cred_cache.c if (!memcredp) {
memcredp 978 source3/winbindd/winbindd_cred_cache.c if (memcredp->ref_count <= 0) {
memcredp 981 source3/winbindd/winbindd_cred_cache.c username, memcredp->ref_count));
memcredp 985 source3/winbindd/winbindd_cred_cache.c memcredp->ref_count--;
memcredp 986 source3/winbindd/winbindd_cred_cache.c if (memcredp->ref_count <= 0) {
memcredp 987 source3/winbindd/winbindd_cred_cache.c delete_memory_creds(memcredp);
memcredp 988 source3/winbindd/winbindd_cred_cache.c DLIST_REMOVE(memory_creds_list, memcredp);
memcredp 989 source3/winbindd/winbindd_cred_cache.c talloc_destroy(memcredp);
memcredp 996 source3/winbindd/winbindd_cred_cache.c username, memcredp->ref_count));
memcredp 1014 source3/winbindd/winbindd_cred_cache.c struct WINBINDD_MEMORY_CREDS *memcredp = NULL;
memcredp 1016 source3/winbindd/winbindd_cred_cache.c memcredp = find_memory_creds_by_name(username);
memcredp 1017 source3/winbindd/winbindd_cred_cache.c if (!memcredp) {
memcredp 1026 source3/winbindd/winbindd_cred_cache.c return winbindd_replace_memory_creds_internal(memcredp, pass);