info3->gids[i].g_rid));
SAFE_FREE(lgroupSIDs);
+ SAFE_FREE(all_group_SIDs);
free_server_info(server_info);
return nt_status;
if ( !NT_STATUS_IS_OK(nt_status) ) {
DEBUG(4,("create_nt_user_token failed\n"));
+ SAFE_FREE(lgroupSIDs);
SAFE_FREE(all_group_SIDs);
free_server_info(server_info);
return nt_status;
(*server_info)->ptok = token;
+ SAFE_FREE(lgroupSIDs);
SAFE_FREE(all_group_SIDs);
/* ensure we are never given NULL session keys */
if (result == NSS_STATUS_SUCCESS && response.extra_data) {
if (NT_STATUS_IS_OK(nt_status)) {
-
- if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3)))
- {
+ if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3))) {
nt_status = make_server_info_info3(mem_ctx,
user_info->internal_username.str,
user_info->smb_name.str, user_info->domain.str,
nt_status = NT_STATUS_NO_LOGON_SERVERS;
}
+ SAFE_FREE(response.extra_data);
return nt_status;
}
{
char *key, *alt_key;
fstring sid_string;
+ BOOL ret;
/*
* we use gecache call to avoid annoying debug messages
* about initialised trustdom
*/
- if (!gencache_init()) return False;
+ if (!gencache_init())
+ return False;
DEBUG(5, ("trustdom_store: storing SID %s of domain %s\n",
sid_string_static(sid), name));
* try to put the names in the cache
*/
if (alt_key) {
- return (gencache_set(alt_key, sid_string, timeout)
- && gencache_set(key, sid_string, timeout));
+ ret = gencache_set(alt_key, sid_string, timeout);
+ if ( ret ) {
+ ret = gencache_set(key, sid_string, timeout);
+ }
+ SAFE_FREE(alt_key);
+ SAFE_FREE(key);
+ return ret;
}
-
- return gencache_set(key, sid_string, timeout);
+
+ ret = gencache_set(key, sid_string, timeout);
+ SAFE_FREE(key);
+ return ret;
}
BOOL trustdom_cache_fetch(const char* name, DOM_SID* sid)
{
- char *key, *value;
+ char *key = NULL, *value = NULL;
time_t timeout;
/* init the cache */
- if (!gencache_init()) return False;
+ if (!gencache_init())
+ return False;
/* exit now if null pointers were passed as they're required further */
- if (!sid) return False;
+ if (!sid)
+ return False;
/* prepare a key and get the value */
key = trustdom_cache_key(name);
- if (!key) return False;
+ if (!key)
+ return False;
if (!gencache_get(key, &value, &timeout)) {
DEBUG(5, ("no entry for trusted domain %s found.\n", name));
SAFE_FREE(key);
+ SAFE_FREE(value);
return False;
} else {
SAFE_FREE(key);
/* convert ip string representation into in_addr structure */
if(! string_to_sid(sid, value)) {
sid = NULL;
+ SAFE_FREE(value);
return False;
}
+ SAFE_FREE(value);
return True;
}
uint32 trustdom_cache_fetch_timestamp( void )
{
- char *value;
+ char *value = NULL;
time_t timeout;
uint32 timestamp;
if (!gencache_get(TDOMTSKEY, &value, &timeout)) {
DEBUG(5, ("no timestamp for trusted domain cache located.\n"));
+ SAFE_FREE(value);
return 0;
}
timestamp = atoi(value);
+ SAFE_FREE(value);
return timestamp;
}
a large number of sites (tridge) */
Globals.bHostnameLookups = False;
+ str_list_free(&Globals.szPassdbBackend);
#ifdef WITH_LDAP_SAMCONFIG
string_set(&Globals.szLdapServer, "localhost");
Globals.ldap_port = 636;
strupper_m(*(char **)dest_ptr);
break;
case P_LIST:
+ str_list_free((char ***)dest_ptr);
str_list_copy((char ***)dest_ptr, *(const char ***)src_ptr);
break;
default:
static BOOL handle_netbios_aliases(int snum, const char *pszParmValue, char **ptr)
{
+ str_list_free(&Globals.szNetbiosAliases);
Globals.szNetbiosAliases = str_list_make(pszParmValue, NULL);
return set_netbios_aliases((const char **)Globals.szNetbiosAliases);
}
data_blob_free(&p->session_key);
delete_nt_token(&p->pipe_user.nt_user_token);
+ data_blob_free(&p->session_key);
SAFE_FREE(p->pipe_user.groups);
DLIST_REMOVE(InternalPipes, p);
* entries out of the blue when setting ACLs, so a get/set
* cycle will drop them.
*/
- if (the_acl_type == SMB_ACL_TYPE_ACCESS && *puid == psbuf->st_uid)
+ if (the_acl_type == SMB_ACL_TYPE_ACCESS && *puid == psbuf->st_uid) {
+ SMB_VFS_SYS_ACL_FREE_QUALIFIER(conn, (void *)puid,tagtype);
continue;
+ }
uid_to_sid( &sid, *puid);
unix_ug.uid = *puid;
owner_type = UID_ACE;
DATA_BLOB auth_data;
DATA_BLOB ap_rep, ap_rep_wrapped, response;
auth_serversupplied_info *server_info = NULL;
- DATA_BLOB session_key;
+ DATA_BLOB session_key = data_blob(NULL, 0);
uint8 tok_id[2];
BOOL foreign = False;
DATA_BLOB nullblob = data_blob(NULL, 0);
if (!p) {
DEBUG(3,("Doesn't look like a valid principal\n"));
data_blob_free(&ap_rep);
+ data_blob_free(&session_key);
SAFE_FREE(client);
return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
DEBUG(3,("Ticket for foreign realm %s@%s\n", client, p+1));
if (!lp_allow_trusted_domains()) {
data_blob_free(&ap_rep);
+ data_blob_free(&session_key);
SAFE_FREE(client);
return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
SAFE_FREE(user);
SAFE_FREE(client);
data_blob_free(&ap_rep);
+ data_blob_free(&session_key);
return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
SAFE_FREE(user);
SAFE_FREE(client);
data_blob_free(&ap_rep);
+ data_blob_free(&session_key);
return ERROR_NT(ret);
}
}
/* register_vuid keeps the server info */
+ /* register_vuid takes ownership of session_key, no need to free after this.
+ A better interface would copy it.... */
sess_vuid = register_vuid(server_info, session_key, nullblob, client);
SAFE_FREE(user);