tok+1,
BOOLSTR(netgroup_ok)));
- free(hostname);
+ SAFE_FREE(hostname);
if (netgroup_ok) return(True);
#else
bm->n = n;
bm->b = (uint32 *)malloc(sizeof(bm->b[0])*(n+31)/32);
if (!bm->b) {
- free(bm);
+ SAFE_FREE(bm);
return NULL;
}
if (!bm)
return;
- if(bm->b)
- free(bm->b);
-
- free(bm);
+ SAFE_FREE(bm->b);
+ SAFE_FREE(bm);
}
/****************************************************************************
static void cmd_set_free(struct command_set *item)
{
if (item != NULL)
- safe_free(item->name);
+ SAFE_FREE(item->name);
- safe_free(item);
+ SAFE_FREE(item);
}
static struct command_set *cmd_set_dup(const struct command_set *from)
if (!(ret_line = readline(pline)))
break;
- safe_free(ret_line);
+ SAFE_FREE(ret_line);
/* Copy read line to samba buffer */
again:
p2 = malloc(maxlen);
if (!p2) {
- free(p);
+ SAFE_FREE(p);
return -1;
}
clen = convert_string(CH_UNIX, CH_DISPLAY, p, ret, p2, maxlen);
if (clen >= maxlen) {
/* it didn't fit - try a larger buffer */
maxlen *= 2;
- free(p2);
+ SAFE_FREE(p2);
goto again;
}
/* good, its converted OK */
- free(p);
+ SAFE_FREE(p);
ret = fwrite(p2, 1, clen, f);
- free(p2);
+ SAFE_FREE(p2);
return ret;
}
void set_rand_reseed_data(unsigned char *data, size_t len)
{
- if (reseed_data)
- free(reseed_data);
+ SAFE_FREE(reseed_data);
reseed_data_size = 0;
reseed_data = (unsigned char *)memdup(data, len);
bucket = hash_elem->bucket;
ubi_dlRemThis(&(table->lru_chain), &(hash_elem->lru_link.lru_link));
ubi_dlRemThis(bucket, (ubi_dlNodePtr)hash_elem);
- free((char*)(hash_elem->value));
- free(hash_elem);
+ SAFE_FREE((char*)(hash_elem->value));
+ SAFE_FREE(hash_elem);
} else {
table->num_elements += 1;
}
if (hash_elem) {
ubi_dlRemove(&(table->lru_chain), &(hash_elem->lru_link.lru_link));
ubi_dlRemove(hash_elem->bucket, (ubi_dlNodePtr) hash_elem);
- if(hash_elem->value)
- free((char *)(hash_elem->value));
- if(hash_elem)
- free((char *) hash_elem);
+ SAFE_FREE(hash_elem->value);
+ SAFE_FREE(hash_elem);
table->num_elements--;
}
}
table->num_elements++;
}
}
- if(buckets)
- free((char *) buckets);
+ SAFE_FREE(buckets);
return True;
}
for (i = 0; i < table->size; bucket++, i++) {
while (bucket->count != 0) {
hash_elem = (hash_element *) ubi_dlRemHead(bucket);
- if(hash_elem->value)
- free((char *)(hash_elem->value));
- if(hash_elem)
- free((char *)hash_elem);
+ SAFE_FREE(hash_elem->value);
+ SAFE_FREE(hash_elem);
}
}
table->size = 0;
- if(table->buckets)
- free((char *) table->buckets);
+ SAFE_FREE(table->buckets);
table->buckets = NULL;
}
return ret;
failed:
- free(ret);
+ SAFE_FREE(ret);
errno = EINVAL;
return (smb_iconv_t)-1;
}
#endif
memset(cd, 0, sizeof(*cd));
- free(cd);
+ SAFE_FREE(cd);
return 0;
}
allones_ip = *interpret_addr2("255.255.255.255");
loopback_ip = *interpret_addr2("127.0.0.1");
- if (probed_ifaces) {
- free(probed_ifaces);
- probed_ifaces = NULL;
- }
+ SAFE_FREE(probed_ifaces);
/* dump the current interfaces if any */
while (local_interfaces) {
struct interface *iface = local_interfaces;
DLIST_REMOVE(local_interfaces, local_interfaces);
ZERO_STRUCTPN(iface);
- free(iface);
+ SAFE_FREE(iface);
}
/* probe the kernel for interfaces */
dbuf.dptr = p;
dbuf.dsize = len + sizeof(rec);
tdb_store(tdb, kbuf, dbuf, TDB_REPLACE);
- free(p);
+ SAFE_FREE(p);
goto ok;
}
if (!memcmp(ptr, &rec, sizeof(rec))) {
if (!len || (len && !memcmp( ptr + sizeof(rec), (char *)buf, len))) {
DEBUG(10,("message_send_pid: discarding duplicate message.\n"));
- free(dbuf.dptr);
+ SAFE_FREE(dbuf.dptr);
tdb_chainunlock(tdb, kbuf);
return True;
}
memcpy((void *)((char*)p+dbuf.dsize), &rec, sizeof(rec));
if (len > 0) memcpy((void *)((char*)p+dbuf.dsize+sizeof(rec)), buf, len);
- free(dbuf.dptr);
+ SAFE_FREE(dbuf.dptr);
dbuf.dptr = p;
dbuf.dsize += len + sizeof(rec);
tdb_store(tdb, kbuf, dbuf, TDB_REPLACE);
- free(dbuf.dptr);
+ SAFE_FREE(dbuf.dptr);
ok:
tdb_chainunlock(tdb, kbuf);
else
tdb_store(tdb, kbuf, dbuf, TDB_REPLACE);
- free(dbuf.dptr);
+ SAFE_FREE(dbuf.dptr);
tdb_chainunlock(tdb, kbuf);
return True;
dfn->fn(msg_type, src, buf, len);
}
}
- if (buf) free(buf);
+ SAFE_FREE(buf);
}
}
next = dfn->next;
if (dfn->msg_type == msg_type) {
DLIST_REMOVE(dispatch_fns, dfn);
- free(dfn);
+ SAFE_FREE(dfn);
}
}
}
}
endgrent();
ret = sys_setgroups(i,grouplst);
- free((char *)grouplst);
+ SAFE_FREE(grouplst);
return ret;
#endif /* HAVE_SETGROUPS */
}
maxlen += nbytes + 20 * (acl_d->count - i);
if ((text = Realloc(oldtext, maxlen)) == NULL) {
- free(oldtext);
+ SAFE_FREE(oldtext);
errno = ENOMEM;
return NULL;
}
ret = acl(name, SETACL, acl_count, acl_p);
- if (acl_buf) {
- free(acl_buf);
- }
+ SAFE_FREE(acl_buf);
return ret;
}
int sys_acl_free_text(char *text)
{
- free(text);
+ SAFE_FREE(text);
return 0;
}
int sys_acl_free_acl(SMB_ACL_T acl_d)
{
- free(acl_d);
+ SAFE_FREE(acl_d);
return 0;
}
return NULL;
}
if ((a->aclp = acl_get_file(path_p, type)) == NULL) {
- free(a);
+ SAFE_FREE(a);
return NULL;
}
a->next = -1;
return NULL;
}
if ((a->aclp = acl_get_fd(fd)) == NULL) {
- free(a);
+ SAFE_FREE(a);
return NULL;
}
a->next = -1;
rc = statacl((char *)path_p,0,file_acl,BUFSIZ);
if(rc == -1) {
DEBUG(0,("statacl returned %d with errno %d\n",rc,errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
acl_entry_link->entryp = (struct new_acl_entry *)malloc(sizeof(struct new_acl_entry));
if(acl_entry_link->entryp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in AIX sys_acl_get_file is %d\n",errno));
return(NULL);
malloc(sizeof(struct acl_entry_link));
if(acl_entry_link->nextp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in AIX sys_acl_get_file is %d\n",errno));
return(NULL);
acl_entry_link = acl_entry_link->nextp;
acl_entry_link->entryp = (struct new_acl_entry *)malloc(sizeof(struct new_acl_entry));
if(acl_entry_link->entryp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in AIX sys_acl_get_file is %d\n",errno));
return(NULL);
if(acl_entry_link_head->count != 0) {
acl_entry_link->nextp = (struct acl_entry_link *)malloc(sizeof(struct acl_entry_link));
if(acl_entry_link->nextp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in AIX sys_acl_get_file is %d\n",errno));
return(NULL);
acl_entry_link = acl_entry_link->nextp;
acl_entry_link->entryp = (struct new_acl_entry *)malloc(sizeof(struct new_acl_entry));
if(acl_entry_link->entryp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in AIX sys_acl_get_file is %d\n",errno));
return(NULL);
}
acl_entry_link_head->count = 0;
- free(file_acl);
+ SAFE_FREE(file_acl);
return(acl_entry_link_head);
}
rc = fstatacl(fd,0,file_acl,BUFSIZ);
if(rc == -1) {
DEBUG(0,("The fstatacl call returned %d with errno %d\n",rc,errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
acl_entry_link_head = acl_entry_link = sys_acl_init(0);
if(acl_entry_link_head == NULL){
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
if(acl_entry_link->entryp == NULL) {
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_get_fd is %d\n",errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
if(acl_entry_link->nextp == NULL) {
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_get_fd is %d\n",errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
acl_entry_link->nextp->prevp = acl_entry_link;
if(acl_entry_link->entryp == NULL) {
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_get_fd is %d\n",errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
if(acl_entry_link->nextp == NULL) {
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_get_fd is %d\n",errno));
- free(file_acl);
+ SAFE_FREE(file_acl);
return(NULL);
}
acl_entry_link->entryp = (struct new_acl_entry *)malloc(sizeof(struct new_acl_entry));
if(acl_entry_link->entryp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_get_fd is %d\n",errno));
return(NULL);
}
acl_entry_link_head->count = 0;
- free(file_acl);
+ SAFE_FREE(file_acl);
return(acl_entry_link_head);
}
acl_length += sizeof(struct acl_entry);
file_acl_temp = (struct acl *)malloc(acl_length);
if(file_acl_temp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_set_file is %d\n",errno));
return(-1);
}
memcpy(file_acl_temp,file_acl,file_acl->acl_len);
- free(file_acl);
+ SAFE_FREE(file_acl);
file_acl = file_acl_temp;
}
rc = chacl(name,file_acl,file_acl->acl_len);
DEBUG(10,("errno is %d\n",errno));
DEBUG(10,("return code is %d\n",rc));
- free(file_acl);
+ SAFE_FREE(file_acl);
DEBUG(10,("Exiting the sys_acl_set_file\n"));
return(rc);
}
acl_length += sizeof(struct acl_entry);
file_acl_temp = (struct acl *)malloc(acl_length);
if(file_acl_temp == NULL) {
- free(file_acl);
+ SAFE_FREE(file_acl);
errno = ENOMEM;
DEBUG(0,("Error in sys_acl_set_fd is %d\n",errno));
return(-1);
}
memcpy(file_acl_temp,file_acl,file_acl->acl_len);
- free(file_acl);
+ SAFE_FREE(file_acl);
file_acl = file_acl_temp;
}
rc = fchacl(fd,file_acl,file_acl->acl_len);
DEBUG(10,("errno is %d\n",errno));
DEBUG(10,("return code is %d\n",rc));
- free(file_acl);
+ SAFE_FREE(file_acl);
DEBUG(10,("Exiting sys_acl_set_fd\n"));
return(rc);
}
struct acl_entry_link *acl_entry_link;
for(acl_entry_link = posix_acl->nextp; acl_entry_link->nextp != NULL; acl_entry_link = acl_entry_link->nextp) {
- free(acl_entry_link->prevp->entryp);
- free(acl_entry_link->prevp);
+ SAFE_FREE(acl_entry_link->prevp->entryp);
+ SAFE_FREE(acl_entry_link->prevp);
}
- free(acl_entry_link->prevp->entryp);
- free(acl_entry_link->prevp);
- free(acl_entry_link->entryp);
- free(acl_entry_link);
+ SAFE_FREE(acl_entry_link->prevp->entryp);
+ SAFE_FREE(acl_entry_link->prevp);
+ SAFE_FREE(acl_entry_link->entryp);
+ SAFE_FREE(acl_entry_link);
return(0);
}
if((ngroups = getgroups(setlen, group_list)) < 0) {
int saved_errno = errno;
- free((char *)group_list);
+ SAFE_FREE(group_list);
errno = saved_errno;
return -1;
}
for(i = 0; i < ngroups; i++)
gidset[i] = (gid_t)group_list[i];
- free((char *)group_list);
+ SAFE_FREE(group_list);
return ngroups;
#endif /* HAVE_BROKEN_GETGROUPS */
}
if(setgroups(setlen, group_list) != 0) {
int saved_errno = errno;
- free((char *)group_list);
+ SAFE_FREE(group_list);
errno = saved_errno;
return -1;
}
- free((char *)group_list);
+ SAFE_FREE(group_list);
return 0 ;
#endif /* HAVE_BROKEN_GETGROUPS */
}
*/
close (child_end);
- free((char *)argl);
+ SAFE_FREE(argl);
/* Link into popen_chain. */
entry->next = popen_chain;
err_exit:
- if(entry)
- free((char *)entry);
- if(argl)
- free((char *)argl);
+ SAFE_FREE(entry);
+ SAFE_FREE(argl);
close(pipe_fds[0]);
close(pipe_fds[1]);
return -1;
wait_pid = sys_waitpid (entry->child_pid, &wstatus, 0);
} while (wait_pid == -1 && errno == EINTR);
- free((char *)entry);
+ SAFE_FREE(entry);
if (wait_pid == -1)
return -1;
tc = malloc(sizeof(*tc));
if (!tc) {
- free(p);
+ SAFE_FREE(p);
return NULL;
}
while (t->list) {
c = t->list->next;
- if (t->list->ptr) free(t->list->ptr);
- free(t->list);
+ SAFE_FREE(t->list->ptr);
+ SAFE_FREE(t->list);
t->list = c;
}
- t->list = NULL;
t->total_alloc_size = 0;
}
return;
talloc_destroy_pool(t);
memset(t, 0, sizeof(*t));
- free(t);
+ SAFE_FREE(t);
}
/* return the current total size of the pool. */
sizeof(dst_table[0])*(i+1));
if (!tdt) {
DEBUG(0,("TimeZoneFaster: out of memory!\n"));
- if (dst_table) free (dst_table);
+ SAFE_FREE(dst_table);
table_size = 0;
} else {
dst_table = tdt;
}
*winbind_answered = True;
- safe_free(groups);
+ SAFE_FREE(groups);
return ret;
err:
*winbind_answered = False;
- safe_free(groups);
+ SAFE_FREE(groups);
return False;
}
tn = Realloc((*num), ((*count)+1) * sizeof(uint32));
if (tn == NULL)
{
- if (*num) free(*num);
+ SAFE_FREE(*num);
return NULL;
}
else (*num) = tn;
void *ret=NULL;
if (size == 0) {
- if (p) free(p);
+ SAFE_FREE(p);
DEBUG(5,("Realloc asked for 0 bytes\n"));
return NULL;
}
/****************************************************************************
-free memory, checks for NULL
+free memory, checks for NULL and set to NULL
+use directly SAFE_FREE()
+exist only because we need to pass a function pointer somewhere --SSS
****************************************************************************/
void safe_free(void *p)
{
- if (p != NULL)
- {
- free(p);
- }
+ SAFE_FREE(p);
}
-
/****************************************************************************
get my own name and IP
****************************************************************************/
void free_namearray(name_compare_entry *name_array)
{
- if(name_array == 0)
+ if(name_array == NULL)
return;
- if(name_array->name != NULL)
- free(name_array->name);
-
- free((char *)name_array);
+ SAFE_FREE(name_array->name);
+ SAFE_FREE(name_array);
}
/****************************************************************************
void zero_free(void *p, size_t size)
{
memset(p, 0, size);
- free(p);
+ SAFE_FREE(p);
}
free_item(entries[i]);
}
}
- free(entries);
+ SAFE_FREE(entries);
}
}
(*len)++;
return item;
} else {
- free((char *)*array);
+ SAFE_FREE(*array);
}
return NULL;
}
{
if (item != NULL)
{
- if (item->srv_name != NULL)
- {
- free(item->srv_name);
- }
- if (item->user_name != NULL)
- {
- free(item->user_name);
- }
- if (item->domain != NULL)
- {
- free(item->domain);
- }
- free(item);
+ SAFE_FREE(item->srv_name);
+ SAFE_FREE(item->user_name);
+ SAFE_FREE(item->domain);
+ SAFE_FREE(item);
}
}
void free_char_array(uint32 num_entries, char **entries)
{
- void(*fn)(void*) = (void(*)(void*))&free;
+ void(*fn)(void*) = (void(*)(void*))&safe_free;
free_void_array(num_entries, (void**)entries, *fn);
}
void free_uint32_array(uint32 num_entries, uint32 **entries)
{
- void(*fn)(void*) = (void(*)(void*))&free;
+ void(*fn)(void*) = (void(*)(void*))&safe_free;
free_void_array(num_entries, (void**)entries, *fn);
}
void free_sid_array(uint32 num_entries, DOM_SID **entries)
{
- void(*fn)(void*) = (void(*)(void*))&free;
+ void(*fn)(void*) = (void(*)(void*))&safe_free;
free_void_array(num_entries, (void**)entries, *fn);
}
return(s);
case EOF:
if (len <= 0 && !s2)
- free(s);
+ SAFE_FREE(s);
return(len>0?s:NULL);
case ' ':
if (start_of_line)
t = (char *)Realloc(s,maxlen);
if (!t) {
DEBUG(0,("fgets_slash: failed to expand buffer!\n"));
- if (s) free(s);
+ SAFE_FREE(s);
return(NULL);
} else s = t;
}
if (!tp) {
DEBUG(0,("file_pload: failed to exand buffer!\n"));
close(fd);
- if (p) free(p);
+ SAFE_FREE(p);
return NULL;
} else p = tp;
memcpy(p+total, buf, n);
if (!p) return NULL;
if (read(fd, p, sbuf.st_size) != sbuf.st_size) {
- free(p);
+ SAFE_FREE(p);
return NULL;
}
p[sbuf.st_size] = 0;
ret = (char **)malloc(sizeof(ret[0])*(i+2));
if (!ret) {
- free(p);
+ SAFE_FREE(p);
return NULL;
}
memset(ret, 0, sizeof(ret[0])*(i+2));
void file_lines_free(char **lines)
{
if (!lines) return;
- free(lines[0]);
- free(lines);
+ SAFE_FREE(lines[0]);
+ SAFE_FREE(lines);
}
grp = getgrent();
if (grp == NULL) {
endgrent();
- free(glist);
+ SAFE_FREE(glist);
return NULL;
}
while (glist) {
struct sys_grent *prev;
- if (glist->gr_name)
- free(glist->gr_name);
- if (glist->gr_passwd)
- free(glist->gr_passwd);
+ SAFE_FREE(glist->gr_name);
+ SAFE_FREE(glist->gr_passwd);
if (glist->gr_mem) {
int i;
for (i = 0; glist->gr_mem[i]; i++)
- free(glist->gr_mem[i]);
- free(glist->gr_mem);
+ SAFE_FREE(glist->gr_mem[i]);
+ SAFE_FREE(glist->gr_mem);
}
prev = glist;
glist = glist->next;
- free(prev);
+ SAFE_FREE(prev);
}
}
while (plist) {
struct sys_pwent *prev;
- if (plist->pw_name)
- free(plist->pw_name);
- if (plist->pw_passwd)
- free(plist->pw_passwd);
- if (plist->pw_gecos)
- free(plist->pw_gecos);
- if (plist->pw_dir)
- free(plist->pw_dir);
- if (plist->pw_shell)
- free(plist->pw_shell);
+ SAFE_FREE(plist->pw_name);
+ SAFE_FREE(plist->pw_passwd);
+ SAFE_FREE(plist->pw_gecos);
+ SAFE_FREE(plist->pw_dir);
+ SAFE_FREE(plist->pw_shell);
prev = plist;
plist = plist->next;
- free(prev);
+ SAFE_FREE(prev);
}
}
l->length--;
data_ptr = item->data;
- free(item);
+ SAFE_FREE(item);
return data_ptr;
}
/* increment to the nbext node in the list */
/* delete the information */
cli_connection_free(located->cli);
- free(located);
+ SAFE_FREE(located);
return True;
}
if (!s || !(*s)) return;
if (*s == null_string)
*s = NULL;
- if (*s) free(*s);
- *s = NULL;
+ SAFE_FREE(*s);
}
/****************************************************************************
/* Empty the list. */
while( NULL != (entry =(list_entry *)ubi_slRemHead( wins_srv_list )) )
{
- if( entry->server )
- free( entry->server );
- free( entry );
+ SAFE_FREE( entry->server );
+ SAFE_FREE( entry );
}
(void)ubi_slInitList( wins_srv_list ); /* shouldn't be needed */
/* Create a copy of the server name and store it in the list. */
if( NULL == (entry->server = strdup( wins_id_bufr )) )
{
- free( entry );
+ SAFE_FREE( entry );
DEBUG( 0,
("wins_srv_load_list(): strdup(\"%s\") failed.\n", wins_id_bufr) );
}
}
/* destroy any earlier buffer */
- if (f->buf) free(f->buf);
+ SAFE_FREE(f->buf);
f->buf = 0;
f->bufsize = 0;
f->next = NULL;
ret->fd = sys_open(fname, flags, mode);
if (ret->fd == -1) {
- free(ret);
+ SAFE_FREE(ret);
return NULL;
}
if (f->buf) {
/* make sure data can't leak into a later malloc */
memset(f->buf, 0, f->bufsize);
- free(f->buf);
+ SAFE_FREE(f->buf);
}
- free(f);
+ SAFE_FREE(f);
return ret;
}
len = vasprintf(&p, format, ap);
if (len <= 0) return len;
ret = x_fwrite(p, 1, len, f);
- free(p);
+ SAFE_FREE(p);
return ret;
}