summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-12-26 08:32:30 +0000
committerJeremy Allison <jra@samba.org>2001-12-26 08:32:30 +0000
commit26e4c4099c61c7ba9f2153e56061bea9882553d9 (patch)
treeb68969a82c21508f28f511fc7263e5242351e47c
parent5e3491784277dd90180ef199d2fa258614958545 (diff)
downloadsamba-26e4c4099c61c7ba9f2153e56061bea9882553d9.tar.gz
samba-26e4c4099c61c7ba9f2153e56061bea9882553d9.tar.xz
samba-26e4c4099c61c7ba9f2153e56061bea9882553d9.zip
Get religion on using SAFE_FREE.
Jeremy.
-rw-r--r--source/client/client.c37
-rw-r--r--source/client/clitar.c20
-rw-r--r--source/include/smb_macros.h2
-rw-r--r--source/include/talloc.h5
-rw-r--r--source/lib/domain_namemap.c28
-rw-r--r--source/lib/genrand.c3
-rw-r--r--source/lib/interface.c7
-rw-r--r--source/lib/snprintf.c2
-rw-r--r--source/lib/sysacls.c10
-rw-r--r--source/lib/talloc.c8
-rw-r--r--source/libsmb/clientgen.c2
-rw-r--r--source/nmbd/nmbd_browserdb.c2
-rw-r--r--source/nmbd/nmbd_packets.c4
-rw-r--r--source/nmbd/nmbd_responserecordsdb.c8
-rw-r--r--source/nmbd/nmbd_serverlistdb.c4
-rw-r--r--source/nmbd/nmbd_subnetdb.c2
-rw-r--r--source/nmbd/nmbd_synclists.c2
-rw-r--r--source/nmbd/nmbd_winsproxy.c6
-rw-r--r--source/nmbd/nmbd_winsserver.c8
-rw-r--r--source/nsswitch/winbind_nss.c12
-rw-r--r--source/nsswitch/winbindd_cm.c4
-rw-r--r--source/nsswitch/wins.c15
-rw-r--r--source/pam_smbpass/pam_smb_auth.c2
-rw-r--r--source/pam_smbpass/pam_smb_passwd.c2
-rw-r--r--source/pam_smbpass/support.c2
-rw-r--r--source/param/loadparm.c11
-rw-r--r--source/param/params.c8
-rw-r--r--source/printing/pcap.c22
-rw-r--r--source/printing/print_cups.c2
-rw-r--r--source/printing/printing.c8
-rw-r--r--source/rpc_server/srv_lsa_hnd.c4
-rw-r--r--source/smbd/close.c5
-rw-r--r--source/smbd/conn.c4
-rw-r--r--source/smbd/dir.c19
-rw-r--r--source/smbd/error.c3
-rw-r--r--source/smbd/fileio.c8
-rw-r--r--source/smbd/files.c2
-rw-r--r--source/smbd/groupname.c16
-rw-r--r--source/smbd/ipc.c22
-rw-r--r--source/smbd/mangle.c8
-rw-r--r--source/smbd/notify_hash.c2
-rw-r--r--source/smbd/notify_kernel.c2
-rw-r--r--source/smbd/open.c18
-rw-r--r--source/smbd/oplock.c3
-rw-r--r--source/smbd/password.c12
-rw-r--r--source/smbd/process.c6
-rw-r--r--source/smbd/reply.c5
-rw-r--r--source/smbd/vfs.c2
-rw-r--r--source/smbwrapper/smbw.c30
-rw-r--r--source/smbwrapper/smbw_dir.c8
-rw-r--r--source/tdb/spinlock.c4
-rw-r--r--source/tdb/tdb.c45
-rw-r--r--source/tdb/tdb.h6
-rw-r--r--source/tdb/tdbtest.c24
-rw-r--r--source/tdb/tdbtorture.c12
-rw-r--r--source/tdb/tdbutil.c4
-rw-r--r--source/utils/locktest.c2
-rw-r--r--source/utils/locktest2.c2
-rw-r--r--source/utils/make_printerdef.c2
-rw-r--r--source/utils/make_smbcodepage.c6
-rw-r--r--source/utils/make_unicodemap.c8
-rw-r--r--source/utils/nmblookup.c2
-rw-r--r--source/utils/smbcacls.c12
-rw-r--r--source/utils/torture.c4
-rw-r--r--source/web/cgi.c2
-rw-r--r--source/web/diagnose.c2
66 files changed, 254 insertions, 310 deletions
diff --git a/source/client/client.c b/source/client/client.c
index 78c242af745..5df0cd1df43 100644
--- a/source/client/client.c
+++ b/source/client/client.c
@@ -370,10 +370,7 @@ functions for do_list_queue
*/
static void reset_do_list_queue(void)
{
- if (do_list_queue)
- {
- free(do_list_queue);
- }
+ SAFE_FREE(do_list_queue);
do_list_queue = 0;
do_list_queue_size = 0;
do_list_queue_start = 0;
@@ -711,7 +708,7 @@ static void do_get(char *rname,char *lname)
rname, (long)nread));
}
- free(data);
+ SAFE_FREE(data);
if (!cli_close(cli, fnum)) {
DEBUG(0,("Error %s closing remote file\n",cli_errstr(cli)));
@@ -1048,13 +1045,13 @@ static void do_put(char *rname,char *lname)
if (!cli_close(cli, fnum)) {
DEBUG(0,("%s closing remote file %s\n",cli_errstr(cli),rname));
fclose(f);
- if (buf) free(buf);
+ SAFE_FREE(buf);
return;
}
fclose(f);
- if (buf) free(buf);
+ SAFE_FREE(buf);
{
struct timeval tp_end;
@@ -1142,8 +1139,8 @@ static void free_file_list (struct file_list * list)
{
tmp = list;
DLIST_REMOVE(list, list);
- if (tmp->file_path) free(tmp->file_path);
- free(tmp);
+ SAFE_FREE(tmp->file_path);
+ SAFE_FREE(tmp);
}
}
@@ -1213,7 +1210,7 @@ static int file_find(struct file_list **list, const char *directory,
}
if (ret == -1) {
- free(path);
+ SAFE_FREE(path);
closedir(dir);
return -1;
}
@@ -1228,7 +1225,7 @@ static int file_find(struct file_list **list, const char *directory,
entry->isdir = isdir;
DLIST_ADD(*list, entry);
} else {
- free(path);
+ SAFE_FREE(path);
}
}
@@ -1264,7 +1261,7 @@ static void cmd_mput(void)
for (temp_list = file_list; temp_list;
temp_list = temp_list->next) {
- if (lname) free(lname);
+ SAFE_FREE(lname);
if (asprintf(&lname, "%s/", temp_list->file_path) <= 0)
continue;
trim_string(lname, "./", "/");
@@ -1273,7 +1270,7 @@ static void cmd_mput(void)
if (temp_list->isdir) {
/* if (!recurse) continue; */
- if (quest) free(quest);
+ SAFE_FREE(quest);
asprintf(&quest, "Put directory %s? ", lname);
if (prompt && !yesno(quest)) { /* No */
/* Skip the directory */
@@ -1281,7 +1278,7 @@ static void cmd_mput(void)
if (!seek_list(temp_list, lname))
break;
} else { /* Yes */
- if (rname) free(rname);
+ SAFE_FREE(rname);
asprintf(&rname, "%s%s", cur_dir, lname);
dos_format(rname);
if (!cli_chkpath(cli, rname) &&
@@ -1295,13 +1292,13 @@ static void cmd_mput(void)
}
continue;
} else {
- if (quest) free(quest);
+ SAFE_FREE(quest);
asprintf(&quest,"Put file %s? ", lname);
if (prompt && !yesno(quest)) /* No */
continue;
/* Yes */
- if (rname) free(rname);
+ SAFE_FREE(rname);
asprintf(&rname, "%s%s", cur_dir, lname);
}
@@ -1310,9 +1307,9 @@ static void cmd_mput(void)
do_put(rname, lname);
}
free_file_list(file_list);
- if (quest) free(quest);
- if (lname) free(lname);
- if (rname) free(rname);
+ SAFE_FREE(quest);
+ SAFE_FREE(lname);
+ SAFE_FREE(rname);
}
}
@@ -1876,7 +1873,7 @@ static char **completion_fn(const char *text, int start, int end)
}
if (count == 2) {
- free(matches[0]);
+ SAFE_FREE(matches[0]);
matches[0] = strdup(matches[1]);
}
matches[count] = NULL;
diff --git a/source/client/clitar.c b/source/client/clitar.c
index fff390b8bee..2beb669de90 100644
--- a/source/client/clitar.c
+++ b/source/client/clitar.c
@@ -194,7 +194,7 @@ static void writetarheader(int f, char *aname, int size, time_t mtime,
i = strlen(b)+1;
DEBUG(5, ("File name in tar file: %s, size=%d, \n", b, (int)strlen(b)));
dotarbuf(f, b, TBLOCK*(((i-1)/TBLOCK)+1));
- free(b);
+ SAFE_FREE(b);
}
/* use l + 1 to do the null too */
@@ -1228,7 +1228,7 @@ static void do_tarput(void)
if (longfilename != NULL) {
- free(finfo.name); /* Free the space already allocated */
+ SAFE_FREE(finfo.name); /* Free the space already allocated */
finfo.name = longfilename;
longfilename = NULL;
@@ -1454,7 +1454,7 @@ void cmd_tar(void)
process_tar();
- free(argl);
+ SAFE_FREE(argl);
}
/****************************************************************************
@@ -1471,7 +1471,7 @@ int process_tar(void)
#else
do_tarput();
#endif
- free(tarbuf);
+ SAFE_FREE(tarbuf);
close(tarhandle);
break;
case 'r':
@@ -1521,7 +1521,7 @@ int process_tar(void)
if (ntarf) dotareof(tarhandle);
close(tarhandle);
- free(tarbuf);
+ SAFE_FREE(tarbuf);
DEBUG(0, ("tar: dumped %d files and directories\n", ntarf));
DEBUG(0, ("Total bytes written: %.0f\n", (double)ttarf));
@@ -1531,9 +1531,9 @@ int process_tar(void)
if (must_free_cliplist) {
int i;
for (i = 0; i < clipn; ++i) {
- free(cliplist[i]);
+ SAFE_FREE(cliplist[i]);
}
- free(cliplist);
+ SAFE_FREE(cliplist);
cliplist = NULL;
clipn = 0;
must_free_cliplist = False;
@@ -1653,16 +1653,16 @@ static int read_inclusion_file(char *filename)
}
if (inclusion_buffer) {
- free(inclusion_buffer);
+ SAFE_FREE(inclusion_buffer);
}
if (error) {
if (cliplist) {
char **pp;
/* We know cliplist is always null-terminated */
for (pp = cliplist; *pp; ++pp) {
- free(*pp);
+ SAFE_FREE(*pp);
}
- free(cliplist);
+ SAFE_FREE(cliplist);
cliplist = NULL;
must_free_cliplist = False;
}
diff --git a/source/include/smb_macros.h b/source/include/smb_macros.h
index 64135c3cb92..bcbe69146aa 100644
--- a/source/include/smb_macros.h
+++ b/source/include/smb_macros.h
@@ -37,7 +37,9 @@
#define IS_DOS_HIDDEN(test_mode) (((test_mode) & aHIDDEN) != 0)
/* free memory if the pointer is valid and zero the pointer */
+#ifndef SAFE_FREE
#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
+#endif
/* zero a structure */
#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
diff --git a/source/include/talloc.h b/source/include/talloc.h
index 89c2f82e056..ee0c943c51f 100644
--- a/source/include/talloc.h
+++ b/source/include/talloc.h
@@ -32,4 +32,9 @@ typedef struct {
size_t total_alloc_size;
} TALLOC_CTX;
+/* free memory if the pointer is valid and zero the pointer */
+#ifndef SAFE_FREE
+#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
+#endif
+
#endif
diff --git a/source/lib/domain_namemap.c b/source/lib/domain_namemap.c
index ef59e4d92f8..4465015570f 100644
--- a/source/lib/domain_namemap.c
+++ b/source/lib/domain_namemap.c
@@ -239,19 +239,10 @@ static ubi_slList ntusrname_map_list;
static void delete_name_entry(name_map_entry *gmep)
{
- if (gmep->grp.nt_name)
- {
- free(gmep->grp.nt_name);
- }
- if (gmep->grp.nt_domain)
- {
- free(gmep->grp.nt_domain);
- }
- if (gmep->grp.unix_name)
- {
- free(gmep->grp.unix_name);
- }
- free((char*)gmep);
+ SAFE_FREE(gmep->grp.nt_name);
+ SAFE_FREE(gmep->grp.nt_domain);
+ SAFE_FREE(gmep->grp.unix_name);
+ SAFE_FREE((char*)gmep);
}
/**************************************************************************
@@ -929,15 +920,8 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
{
res3 = False;
}
- if (types != NULL)
- {
- free(types);
- }
-
- if (sids != NULL)
- {
- free(sids);
- }
+ SAFE_FREE(types);
+ SAFE_FREE(sids);
return res3 && res4;
}
diff --git a/source/lib/genrand.c b/source/lib/genrand.c
index 54d561d2212..aad61d08309 100644
--- a/source/lib/genrand.c
+++ b/source/lib/genrand.c
@@ -34,8 +34,7 @@ size_t reseed_data_size;
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);
diff --git a/source/lib/interface.c b/source/lib/interface.c
index d1f9ed67d71..3a269294ed9 100644
--- a/source/lib/interface.c
+++ b/source/lib/interface.c
@@ -175,17 +175,14 @@ void load_interfaces(void)
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 */
diff --git a/source/lib/snprintf.c b/source/lib/snprintf.c
index 88eea2824be..8455847f065 100644
--- a/source/lib/snprintf.c
+++ b/source/lib/snprintf.c
@@ -820,7 +820,7 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c)
if (!msg)
return;
syslog(facility_priority, "%s", msg);
- free(msg);
+ SAFE_FREE(msg);
}
#endif /* HAVE_SYSLOG */
#endif /* HAVE_VSYSLOG */
diff --git a/source/lib/sysacls.c b/source/lib/sysacls.c
index c4e21df6a1f..743c098bebd 100644
--- a/source/lib/sysacls.c
+++ b/source/lib/sysacls.c
@@ -1335,7 +1335,7 @@ char *sys_acl_to_text(SMB_ACL_T acl_d, ssize_t *len_p)
maxlen += nbytes + 20 * (acl_d->count - i);
if ((text = Realloc(oldtext, maxlen)) == NULL) {
- free(oldtext);
+ SAFE_FREE(oldtext);
errno = ENOMEM;
return NULL;
}
@@ -1865,9 +1865,7 @@ int sys_acl_set_file(const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
ret = acl(name, ACL_SET, acl_count, acl_p);
- if (acl_buf) {
- free(acl_buf);
- }
+ SAFE_FREE(acl_buf);
return ret;
}
@@ -1919,13 +1917,13 @@ int sys_acl_delete_def_file(const char *path)
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;
}
diff --git a/source/lib/talloc.c b/source/lib/talloc.c
index cfd130e888b..1d8bc265802 100644
--- a/source/lib/talloc.c
+++ b/source/lib/talloc.c
@@ -62,7 +62,7 @@ void *talloc(TALLOC_CTX *t, size_t size)
tc = malloc(sizeof(*tc));
if (!tc) {
- free(p);
+ SAFE_FREE(p);
return NULL;
}
@@ -112,8 +112,8 @@ void talloc_destroy_pool(TALLOC_CTX *t)
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;
}
@@ -128,7 +128,7 @@ void talloc_destroy(TALLOC_CTX *t)
return;
talloc_destroy_pool(t);
memset(t, 0, sizeof(*t));
- free(t);
+ SAFE_FREE(t);
}
/* return the current total size of the pool. */
diff --git a/source/libsmb/clientgen.c b/source/libsmb/clientgen.c
index 68042de9dc8..f90e8fb590b 100644
--- a/source/libsmb/clientgen.c
+++ b/source/libsmb/clientgen.c
@@ -250,7 +250,7 @@ void cli_shutdown(struct cli_state *cli)
allocated = cli->allocated;
ZERO_STRUCTP(cli);
if (allocated) {
- free(cli);
+ SAFE_FREE(cli);
}
}
diff --git a/source/nmbd/nmbd_browserdb.c b/source/nmbd/nmbd_browserdb.c
index 5b08207556a..cc1ce6c2ab5 100644
--- a/source/nmbd/nmbd_browserdb.c
+++ b/source/nmbd/nmbd_browserdb.c
@@ -54,7 +54,7 @@ ubi_dlNewList( lmb_browserlist );
*/
static void remove_lmb_browser_entry( struct browse_cache_record *browc )
{
- free( (char *)ubi_dlRemThis( lmb_browserlist, browc ) );
+ safe_free( (char *)ubi_dlRemThis( lmb_browserlist, browc ) );
} /* remove_lmb_browser_entry */
/* ************************************************************************** **
diff --git a/source/nmbd/nmbd_packets.c b/source/nmbd/nmbd_packets.c
index d187dfefa22..bfa96179dd4 100644
--- a/source/nmbd/nmbd_packets.c
+++ b/source/nmbd/nmbd_packets.c
@@ -1756,8 +1756,8 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
*listen_number = (count*2) + 2;
- if (*ppset) free(*ppset);
- if (*psock_array) free(*psock_array);
+ SAFE_FREE(*ppset);
+ SAFE_FREE(*psock_array);
*ppset = pset;
*psock_array = sock_array;
diff --git a/source/nmbd/nmbd_responserecordsdb.c b/source/nmbd/nmbd_responserecordsdb.c
index 93b48d06f12..b47ea5eefa4 100644
--- a/source/nmbd/nmbd_responserecordsdb.c
+++ b/source/nmbd/nmbd_responserecordsdb.c
@@ -81,7 +81,7 @@ void remove_response_record(struct subnet_record *subrec,
(*rrec->userdata->free_fn)(rrec->userdata);
} else {
ZERO_STRUCTP(rrec->userdata);
- free((char *)rrec->userdata);
+ SAFE_FREE((char *)rrec->userdata);
}
}
@@ -90,7 +90,7 @@ void remove_response_record(struct subnet_record *subrec,
free_packet(rrec->packet);
ZERO_STRUCTP(rrec);
- free((char *)rrec);
+ SAFE_FREE((char *)rrec);
num_response_packets--; /* count of total number of packets still around */
}
@@ -136,7 +136,7 @@ struct response_record *make_response_record( struct subnet_record *subrec,
{
DEBUG(0,("make_response_queue_record: copy fail for userdata.\n"));
ZERO_STRUCTP(rrec);
- free(rrec);
+ SAFE_FREE(rrec);
return NULL;
}
}
@@ -148,7 +148,7 @@ struct response_record *make_response_record( struct subnet_record *subrec,
{
DEBUG(0,("make_response_queue_record: malloc fail for userdata.\n"));
ZERO_STRUCTP(rrec);
- free(rrec);
+ SAFE_FREE(rrec);
return NULL;
}
rrec->userdata->copy_fn = userdata->copy_fn;
diff --git a/source/nmbd/nmbd_serverlistdb.c b/source/nmbd/nmbd_serverlistdb.c
index 26b0cddcea0..4245add2630 100644
--- a/source/nmbd/nmbd_serverlistdb.c
+++ b/source/nmbd/nmbd_serverlistdb.c
@@ -55,7 +55,7 @@ void remove_all_servers(struct work_record *work)
work->serverlist = servrec->next;
ZERO_STRUCTP(servrec);
- free((char *)servrec);
+ SAFE_FREE((char *)servrec);
}
@@ -120,7 +120,7 @@ void remove_server_from_workgroup(struct work_record *work, struct server_record
work->serverlist = servrec->next;
ZERO_STRUCTP(servrec);
- free((char *)servrec);
+ SAFE_FREE((char *)servrec);
work->subnet->work_changed = True;
}
diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c
index 33b4b050f06..8516eb425eb 100644
--- a/source/nmbd/nmbd_subnetdb.c
+++ b/source/nmbd/nmbd_subnetdb.c
@@ -186,7 +186,7 @@ static struct subnet_record *make_subnet(char *name, enum subnet_type type,
close(nmb_sock);
close(dgram_sock);
ZERO_STRUCTP(subrec);
- free((char *)subrec);
+ SAFE_FREE((char *)subrec);
return(NULL);
}
diff --git a/source/nmbd/nmbd_synclists.c b/source/nmbd/nmbd_synclists.c
index 8670a45a680..1132d9a5147 100644
--- a/source/nmbd/nmbd_synclists.c
+++ b/source/nmbd/nmbd_synclists.c
@@ -297,7 +297,7 @@ void sync_check_completion(void)
complete_sync(s);
DLIST_REMOVE(syncs, s);
ZERO_STRUCTP(s);
- free(s);
+ SAFE_FREE(s);
}
}
}
diff --git a/source/nmbd/nmbd_winsproxy.c b/source/nmbd/nmbd_winsproxy.c
index 2f50881d297..460c72a9c77 100644
--- a/source/nmbd/nmbd_winsproxy.c
+++ b/source/nmbd/nmbd_winsproxy.c
@@ -81,7 +81,7 @@ returned for name %s.\n", nmb_namestr(nmbname) ));
WINS_PROXY_NAME, num_ips, iplist );
if(iplist != &ip)
- free((char *)iplist);
+ SAFE_FREE((char *)iplist);
/*
* Check that none of the IP addresses we are returning is on the
@@ -159,7 +159,7 @@ static struct userdata_struct *wins_proxy_userdata_copy_fn(struct userdata_struc
/* Do a deep copy of the packet. */
if((copy_of_p = copy_packet(p)) == NULL)
{
- free((char *)new_userdata);
+ SAFE_FREE((char *)new_userdata);
return NULL;
}
@@ -190,7 +190,7 @@ static void wins_proxy_userdata_free_fn(struct userdata_struct *userdata)
free_packet(p);
ZERO_STRUCTP(userdata);
- free((char *)userdata);
+ SAFE_FREE((char *)userdata);
}
/****************************************************************************
diff --git a/source/nmbd/nmbd_winsserver.c b/source/nmbd/nmbd_winsserver.c
index 8be182563a7..15cb2fcb6fc 100644
--- a/source/nmbd/nmbd_winsserver.c
+++ b/source/nmbd/nmbd_winsserver.c
@@ -299,7 +299,7 @@ BOOL initialise_wins(void)
if(nb_flags_str[strlen(nb_flags_str)-1] == 'S')
{
DEBUG(5,("initialise_wins: Ignoring SELF name %s\n", line));
- free((char *)ip_list);
+ SAFE_FREE((char *)ip_list);
continue;
}
@@ -338,7 +338,7 @@ BOOL initialise_wins(void)
name, type, ttl, inet_ntoa(ip_list[0]), nb_flags));
}
- free((char *)ip_list);
+ SAFE_FREE((char *)ip_list);
}
fclose(fp);
@@ -1280,7 +1280,7 @@ static void process_wins_dmb_query_request(struct subnet_record *subrec,
prdata, /* data to send. */
num_ips*6); /* data length. */
- free(prdata);
+ SAFE_FREE(prdata);
}
/****************************************************************************
@@ -1338,7 +1338,7 @@ void send_wins_name_query_response(int rcode, struct packet_struct *p,
reply_data_len); /* data length. */
if((prdata != rdata) && (prdata != NULL))
- free(prdata);
+ SAFE_FREE(prdata);
}
/***********************************************************************
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c
index 4579d167d2b..bbeae45b0ed 100644
--- a/source/nsswitch/winbind_nss.c
+++ b/source/nsswitch/winbind_nss.c
@@ -108,7 +108,7 @@ winbind_xid_lookup(int xid, struct winbindd_request **requestp)
*last = dx->next;
result = dx->rq;
*requestp = dx->request;
- free(dx);
+ SAFE_FREE(dx);
}
nsd_logprintf(NSD_LOG_LOW,
"entering winbind_xid_lookup xid = %d rq = 0x%x, request = 0x%x\n",
@@ -339,7 +339,7 @@ send_next_request(nsd_file_t *rq, struct winbindd_request *request)
nsd_logprintf(NSD_LOG_MIN, "send_next_request (winbind) %d to = %d\n",
rq->f_cmd_data, timeout);
status = winbindd_send_request((int)rq->f_cmd_data,request);
- free(request);
+ SAFE_FREE(request);
if (status != NSS_STATUS_SUCCESS) {
nsd_logprintf(NSD_LOG_MIN,
@@ -413,7 +413,7 @@ int lookup(nsd_file_t *rq)
* Don't understand this map - just return not found
*/
nsd_logprintf(NSD_LOG_MIN, "lookup (winbind) unknown table\n");
- free(request);
+ SAFE_FREE(request);
rq->f_status = NS_NOTFOUND;
return NSD_NEXT;
}
@@ -471,7 +471,7 @@ do_list(int state, nsd_file_t *rq)
break;
default:
nsd_logprintf(NSD_LOG_MIN, "do_list (winbind) unknown state\n");
- free(request);
+ SAFE_FREE(request);
rq->f_status = NS_NOTFOUND;
return NSD_NEXT;
}
@@ -489,7 +489,7 @@ do_list(int state, nsd_file_t *rq)
break;
default:
nsd_logprintf(NSD_LOG_MIN, "do_list (winbind) unknown state\n");
- free(request);
+ SAFE_FREE(request);
rq->f_status = NS_NOTFOUND;
return NSD_NEXT;
}
@@ -498,7 +498,7 @@ do_list(int state, nsd_file_t *rq)
* Don't understand this map - just return not found
*/
nsd_logprintf(NSD_LOG_MIN, "do_list (winbind) unknown table\n");
- free(request);
+ SAFE_FREE(request);
rq->f_status = NS_NOTFOUND;
return NSD_NEXT;
}
diff --git a/source/nsswitch/winbindd_cm.c b/source/nsswitch/winbindd_cm.c
index 21bea9da301..4c1554faf87 100644
--- a/source/nsswitch/winbindd_cm.c
+++ b/source/nsswitch/winbindd_cm.c
@@ -263,7 +263,7 @@ static BOOL cm_open_connection(char *domain, char *pipe_name,
DEBUG(10, ("cm_open_connection cache entry expired for %s, %s\n", domain, new_conn->controller));
DLIST_REMOVE(open_connection_cache, occ);
- free(occ);
+ SAFE_FREE(occ);
break;
}
@@ -716,7 +716,7 @@ static void dump_conn_list(void)
asprintf(&msg, "\t%-15s %-15s %-16s", con->domain, con->controller, con->pipe_name);
DEBUG(0, ("%s\n", msg));
- free(msg);
+ SAFE_FREE(msg);
}
}
diff --git a/source/nsswitch/wins.c b/source/nsswitch/wins.c
index 1765320a1d2..a645172e53d 100644
--- a/source/nsswitch/wins.c
+++ b/source/nsswitch/wins.c
@@ -205,7 +205,7 @@ int lookup(nsd_file_t *rq)
if ( status = lookup_byaddr_backend(key, &count)) {
size = strlen(key) + 1;
if (size > len) {
- free(status);
+ SAFE_FREE(status);
return NSD_ERROR;
}
len -= size;
@@ -217,7 +217,7 @@ int lookup(nsd_file_t *rq)
if (status[i].type == 0x20) {
size = sizeof(status[i].name) + 1;
if (size > len) {
- free(status);
+ SAFE_FREE(status);
return NSD_ERROR;
}
len -= size;
@@ -227,7 +227,7 @@ int lookup(nsd_file_t *rq)
}
}
response[strlen(response)-1] = '\n';
- free(status);
+ SAFE_FREE(status);
}
} else if (strcasecmp(map,"hosts.byname") == 0) {
if (ip_list = lookup_byname_backend(key, &count)) {
@@ -235,7 +235,7 @@ int lookup(nsd_file_t *rq)
addr = inet_ntoa(ip_list[i-1]);
size = strlen(addr) + 1;
if (size > len) {
- free(ip_list);
+ SAFE_FREE(ip_list);
return NSD_ERROR;
}
len -= size;
@@ -246,13 +246,13 @@ int lookup(nsd_file_t *rq)
}
size = strlen(key) + 1;
if (size > len) {
- free(ip_list);
+ SAFE_FREE(ip_list);
return NSD_ERROR;
}
strncat(response,key,size);
strncat(response,"\n",1);
found = True;
- free(ip_list);
+ SAFE_FREE(ip_list);
}
}
@@ -310,8 +310,7 @@ _nss_wins_gethostbyname_r(const char *name, struct hostent *he,
host_addresses++;
}
- if (ip_list)
- free(ip_list);
+ SAFE_FREE(ip_list);
memcpy(buffer, name, namelen);
he->h_name = buffer;
diff --git a/source/pam_smbpass/pam_smb_auth.c b/source/pam_smbpass/pam_smb_auth.c
index 739b1653eeb..e9502165aaa 100644
--- a/source/pam_smbpass/pam_smb_auth.c
+++ b/source/pam_smbpass/pam_smb_auth.c
@@ -158,7 +158,7 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags,
pam_get_data(pamh, "smb_setcred_return", (const void **) &pretval);
if(pretval) {
retval = *pretval;
- free(pretval);
+ SAFE_FREE(pretval);
}
pam_set_data(pamh, "smb_setcred_return", NULL, NULL);
diff --git a/source/pam_smbpass/pam_smb_passwd.c b/source/pam_smbpass/pam_smb_passwd.c
index c2af620672e..da96f375d5a 100644
--- a/source/pam_smbpass/pam_smb_passwd.c
+++ b/source/pam_smbpass/pam_smb_passwd.c
@@ -167,7 +167,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
set( SMB__OLD_PASSWD, ctrl );
retval = _smb_read_password( pamh, ctrl, Announce, "Current SMB password: ",
NULL, _SMB_OLD_AUTHTOK, &pass_old );
- free( Announce );
+ SAFE_FREE( Announce );
if (retval != PAM_SUCCESS) {
_log_err( LOG_NOTICE
diff --git a/source/pam_smbpass/support.c b/source/pam_smbpass/support.c
index 0fd723b75d6..3f5d52cdef2 100644
--- a/source/pam_smbpass/support.c
+++ b/source/pam_smbpass/support.c
@@ -293,7 +293,7 @@ void _cleanup_failures( pam_handle_t * pamh, void *fl, int err )
}
_pam_delete( failure->agent ); /* tidy up */
_pam_delete( failure->user ); /* tidy up */
- free( failure );
+ SAFE_FREE( failure );
}
}
diff --git a/source/param/loadparm.c b/source/param/loadparm.c
index e0eea217b45..d9017c07ca1 100644
--- a/source/param/loadparm.c
+++ b/source/param/loadparm.c
@@ -1766,11 +1766,7 @@ static void free_service(service * pservice)
pservice->szService));
string_free(&pservice->szService);
- if (pservice->copymap)
- {
- free(pservice->copymap);
- pservice->copymap = NULL;
- }
+ SAFE_FREE(pservice->copymap);
for (i = 0; parm_table[i].label; i++)
if ((parm_table[i].type == P_STRING ||
@@ -2622,8 +2618,7 @@ initialise a copymap
static void init_copymap(service * pservice)
{
int i;
- if (pservice->copymap)
- free(pservice->copymap);
+ SAFE_FREE(pservice->copymap);
pservice->copymap = (BOOL *)malloc(sizeof(BOOL) * NUMPARAMETERS);
if (!pservice->copymap)
DEBUG(0,
@@ -3204,7 +3199,7 @@ static void lp_add_auto_services(char *str)
lp_add_home(p, homes, home);
}
}
- free(s);
+ SAFE_FREE(s);
}
/***************************************************************************
diff --git a/source/param/params.c b/source/param/params.c
index d48939bf15c..a7d50601768 100644
--- a/source/param/params.c
+++ b/source/param/params.c
@@ -119,8 +119,8 @@ static int mygetc(myFILE *f)
static void myfile_close(myFILE *f)
{
if (!f) return;
- if (f->buf) free(f->buf);
- free(f);
+ SAFE_FREE(f->buf);
+ SAFE_FREE(f);
}
/* -------------------------------------------------------------------------- **
@@ -541,7 +541,7 @@ static myFILE *OpenConfFile( char *FileName )
DEBUG( lvl,
("%s Unable to open configuration file \"%s\":\n\t%s\n",
func, FileName, strerror(errno)) );
- free(ret);
+ SAFE_FREE(ret);
return NULL;
}
@@ -591,7 +591,7 @@ BOOL pm_process( char *FileName,
return( False );
}
result = Parse( InFile, sfunc, pfunc );
- free( bufr );
+ SAFE_FREE( bufr );
bufr = NULL;
bSize = 0;
}
diff --git a/source/printing/pcap.c b/source/printing/pcap.c
index 34bd8db981b..a2ca0b7dcb4 100644
--- a/source/printing/pcap.c
+++ b/source/printing/pcap.c
@@ -112,7 +112,7 @@ static void ScanQconfig_fn(char *psz,void (*fn)(char *, char *))
iEtat = 0;
/* scan qconfig file for searching <printername>: */
- for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); free(line))
+ for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); safe_free(line))
{
if (*line == '*' || *line == 0)
continue;
@@ -182,7 +182,7 @@ static BOOL ScanQconfig(char *psz,char *pszPrintername)
if ((pfile = sys_fopen(psz, "r")) == NULL)
{
DEBUG(0,( "Unable to open qconfig file %s for read!\n", psz));
- free(pName);
+ SAFE_FREE(pName);
return(False);
}
slprintf(pName, iLg + 9, "%s:",pszPrintername);
@@ -190,7 +190,7 @@ static BOOL ScanQconfig(char *psz,char *pszPrintername)
/*DEBUG(3,( " Looking for entry %s\n",pName));*/
iEtat = 0;
/* scan qconfig file for searching <printername>: */
- for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); free(line))
+ for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); safe_free(line))
{
if (*line == '*' || *line == 0)
continue;
@@ -209,8 +209,8 @@ static BOOL ScanQconfig(char *psz,char *pszPrintername)
{
/* name is found without stanza device */
/* probably a good printer ??? */
- free (line);
- free(pName);
+ SAFE_FREE (line);
+ SAFE_FREE(pName);
fclose(pfile);
return(True);
}
@@ -223,15 +223,15 @@ static BOOL ScanQconfig(char *psz,char *pszPrintername)
else if (strlocate(line,"device"))
{
/* it's a good virtual printer */
- free (line);
- free(pName);
+ SAFE_FREE (line);
+ SAFE_FREE(pName);
fclose(pfile);
return(True);
}
break;
}
}
- free (pName);
+ SAFE_FREE (pName);
fclose(pfile);
return(False);
}
@@ -289,7 +289,7 @@ BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname)
return(False);
}
- for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); free(line))
+ for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); safe_free(line))
{
if (*line == '#' || *line == 0)
continue;
@@ -310,7 +310,7 @@ BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname)
{
/* normalise the case */
pstrcpy(pszPrintername,p);
- free(line);
+ SAFE_FREE(line);
fclose(pfile);
return(True);
}
@@ -372,7 +372,7 @@ void pcap_printer_fn(void (*fn)(char *, char *))
return;
}
- for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); free(line))
+ for (;(line = fgets_slash(NULL,sizeof(pstring),pfile)); safe_free(line))
{
if (*line == '#' || *line == 0)
continue;
diff --git a/source/printing/print_cups.c b/source/printing/print_cups.c
index 61c839733c8..327811dd9fe 100644
--- a/source/printing/print_cups.c
+++ b/source/printing/print_cups.c
@@ -823,7 +823,7 @@ cups_queue_get(int snum, print_queue_struct **q, print_status_struct *status)
ippDelete(response);
httpClose(http);
- free (queue);
+ SAFE_FREE(queue);
return (0);
}
diff --git a/source/printing/printing.c b/source/printing/printing.c
index 42e36c2b666..df2dbd252e7 100644
--- a/source/printing/printing.c
+++ b/source/printing/printing.c
@@ -108,7 +108,7 @@ static struct printjob *print_job_find(int jobid)
if (!ret.dptr || ret.dsize != sizeof(pjob)) return NULL;
memcpy(&pjob, ret.dptr, sizeof(pjob));
- free(ret.dptr);
+ SAFE_FREE(ret.dptr);
return &pjob;
}
@@ -282,7 +282,7 @@ static pid_t get_updating_pid(fstring printer_name)
return (pid_t)-1;
memcpy(&updating_pid, data.dptr, sizeof(pid_t));
- free(data.dptr);
+ SAFE_FREE(data.dptr);
if (process_exists(updating_pid))
return updating_pid;
@@ -794,7 +794,7 @@ static int get_queue_status(int snum, print_status_struct *status)
if (data.dsize == sizeof(print_status_struct)) {
memcpy(status, data.dptr, sizeof(print_status_struct));
}
- free(data.dptr);
+ SAFE_FREE(data.dptr);
}
return status->qcount;
}
@@ -1162,7 +1162,7 @@ int print_queue_status(int snum,
if (data.dsize == sizeof(*status)) {
memcpy(status, data.dptr, sizeof(*status));
}
- free(data.dptr);
+ SAFE_FREE(data.dptr);
}
/*
diff --git a/source/rpc_server/srv_lsa_hnd.c b/source/rpc_server/srv_lsa_hnd.c
index bce9e68a56f..62a04e875ac 100644
--- a/source/rpc_server/srv_lsa_hnd.c
+++ b/source/rpc_server/srv_lsa_hnd.c
@@ -192,7 +192,7 @@ BOOL close_policy_hnd(pipes_struct *p, POLICY_HND *hnd)
ZERO_STRUCTP(pol);
- free(pol);
+ SAFE_FREE(pol);
return True;
}
@@ -215,7 +215,7 @@ void close_policy_by_pipe(pipes_struct *p)
p->pipe_handles->Policy = NULL;
p->pipe_handles->count = 0;
- free(p->pipe_handles);
+ SAFE_FREE(p->pipe_handles);
p->pipe_handles = NULL;
DEBUG(10,("close_policy_by_pipe: deleted handle list for pipe %s\n", p->name ));
}
diff --git a/source/smbd/close.c b/source/smbd/close.c
index fc0e6a4e1d9..fdb95a634be 100644
--- a/source/smbd/close.c
+++ b/source/smbd/close.c
@@ -100,10 +100,7 @@ static int close_filestruct(files_struct *fsp)
fsp->stat_open = False;
conn->num_files_open--;
- if(fsp->wbmpx_ptr) {
- free((char *)fsp->wbmpx_ptr);
- fsp->wbmpx_ptr = NULL;
- }
+ SAFE_FREE((char *)fsp->wbmpx_ptr);
return ret;
}
diff --git a/source/smbd/conn.c b/source/smbd/conn.c
index ba1efca3f76..7e8a8383213 100644
--- a/source/smbd/conn.c
+++ b/source/smbd/conn.c
@@ -175,7 +175,7 @@ void conn_free(connection_struct *conn)
DLIST_REMOVE(Connections, conn);
if (conn->ngroups && conn->groups) {
- free(conn->groups);
+ SAFE_FREE(conn->groups);
conn->groups = NULL;
conn->ngroups = 0;
}
@@ -194,7 +194,7 @@ void conn_free(connection_struct *conn)
num_open--;
ZERO_STRUCTP(conn);
- free(conn);
+ SAFE_FREE(conn);
}
diff --git a/source/smbd/dir.c b/source/smbd/dir.c
index d7213c8259b..809e8612a17 100644
--- a/source/smbd/dir.c
+++ b/source/smbd/dir.c
@@ -244,10 +244,9 @@ static void dptr_close_internal(dptr_struct *dptr)
}
/* Lanman 2 specific code */
- if (dptr->wcard)
- free(dptr->wcard);
+ SAFE_FREE(dptr->wcard);
string_set(&dptr->path,"");
- free((char *)dptr);
+ SAFE_FREE((char *)dptr);
}
/****************************************************************************
@@ -436,7 +435,7 @@ int dptr_create(connection_struct *conn,char *path, BOOL old_handle, BOOL expect
if(dptr->dnum == -1 || dptr->dnum > 254) {
DEBUG(0,("dptr_create: returned %d: Error - all old dirptrs in use ?\n", dptr->dnum));
- free((char *)dptr);
+ SAFE_FREE((char *)dptr);
return -1;
}
}
@@ -465,7 +464,7 @@ int dptr_create(connection_struct *conn,char *path, BOOL old_handle, BOOL expect
if(dptr->dnum == -1 || dptr->dnum < 255) {
DEBUG(0,("dptr_create: returned %d: Error - all new dirptrs in use ?\n", dptr->dnum));
- free((char *)dptr);
+ SAFE_FREE((char *)dptr);
return -1;
}
}
@@ -767,7 +766,7 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
ret = user_can_read_file(conn, entry);
- free(entry);
+ SAFE_FREE(entry);
}
if (!ret) continue;
}
@@ -802,8 +801,8 @@ void CloseDir(void *p)
{
Dir *dirp = (Dir *)p;
if (!dirp) return;
- if (dirp->data) free(dirp->data);
- free(dirp);
+ SAFE_FREE(dirp->data);
+ SAFE_FREE(dirp);
}
/*******************************************************************
@@ -912,7 +911,7 @@ void DirCacheAdd( char *path, char *name, char *dname, int snum )
/* Free excess cache entries. */
while( DIRCACHESIZE < dir_cache->count )
- free( ubi_dlRemTail( dir_cache ) );
+ safe_free( ubi_dlRemTail( dir_cache ) );
}
@@ -964,7 +963,7 @@ void DirCacheFlush(int snum)
NULL != entry; ) {
next = ubi_dlNext( entry );
if( entry->snum == snum )
- free( ubi_dlRemThis( dir_cache, entry ) );
+ safe_free( ubi_dlRemThis( dir_cache, entry ) );
entry = (dir_cache_entry *)next;
}
}
diff --git a/source/smbd/error.c b/source/smbd/error.c
index 3c829deb09d..78425fafc66 100644
--- a/source/smbd/error.c
+++ b/source/smbd/error.c
@@ -37,8 +37,7 @@ int cached_error_packet(char *outbuf,files_struct *fsp,int line,const char *file
int32 err = wbmpx->wr_error;
/* We can now delete the auxiliary struct */
- free((char *)wbmpx);
- fsp->wbmpx_ptr = NULL;
+ SAFE_FREE((char *)wbmpx);
return error_packet(outbuf,NT_STATUS_OK,eclass,err,line,file);
}
diff --git a/source/smbd/fileio.c b/source/smbd/fileio.c
index fbcdc883b38..af119020d82 100644
--- a/source/smbd/fileio.c
+++ b/source/smbd/fileio.c
@@ -496,10 +496,8 @@ void delete_write_cache(files_struct *fsp)
SMB_ASSERT(wcp->data_size == 0);
- free(wcp->data);
- free(wcp);
-
- fsp->wcp = NULL;
+ SAFE_FREE(wcp->data);
+ SAFE_FREE(wcp);
DEBUG(10,("delete_write_cache: File %s deleted write cache\n", fsp->fsp_name ));
@@ -532,7 +530,7 @@ static BOOL setup_write_cache(files_struct *fsp, SMB_OFF_T file_size)
if((wcp->data = malloc(wcp->alloc_size)) == NULL) {
DEBUG(0,("setup_write_cache: malloc fail for buffer size %u.\n",
(unsigned int)wcp->alloc_size ));
- free(wcp);
+ SAFE_FREE(wcp);
return False;
}
diff --git a/source/smbd/files.c b/source/smbd/files.c
index c845cb19c4b..3935a12442b 100644
--- a/source/smbd/files.c
+++ b/source/smbd/files.c
@@ -344,7 +344,7 @@ void file_free(files_struct *fsp)
if (fsp == chain_fsp) chain_fsp = NULL;
- free(fsp);
+ SAFE_FREE(fsp);
}
/****************************************************************************
diff --git a/source/smbd/groupname.c b/source/smbd/groupname.c
index d7566ff5354..1cdca50e65f 100644
--- a/source/smbd/groupname.c
+++ b/source/smbd/groupname.c
@@ -52,11 +52,9 @@ static void delete_groupname_map_list(void)
groupname_map_entry *gmep;
while((gmep = (groupname_map_entry *)ubi_slRemHead( &groupname_map_list )) != NULL) {
- if(gmep->windows_name)
- free(gmep->windows_name);
- if(gmep->unix_name)
- free(gmep->unix_name);
- free((char *)gmep);
+ SAFE_FREE(gmep->windows_name);
+ SAFE_FREE(gmep->unix_name);
+ SAFE_FREE((char *)gmep);
}
}
@@ -187,11 +185,9 @@ Error was %s.\n", unixname, strerror(errno) ));
if(new_ep->windows_name == NULL || new_ep->unix_name == NULL) {
DEBUG(0,("load_groupname_map: malloc fail for names in groupname_map_entry.\n"));
fclose(fp);
- if(new_ep->windows_name != NULL)
- free(new_ep->windows_name);
- if(new_ep->unix_name != NULL)
- free(new_ep->unix_name);
- free((char *)new_ep);
+ SAFE_FREE(new_ep->windows_name);
+ SAFE_FREE(new_ep->unix_name);
+ SAFE_FREE((char *)new_ep);
file_lines_free(lines);
return;
}
diff --git a/source/smbd/ipc.c b/source/smbd/ipc.c
index ebd29ecbe89..e1c3e7fe4d3 100644
--- a/source/smbd/ipc.c
+++ b/source/smbd/ipc.c
@@ -183,13 +183,13 @@ static BOOL api_rpc_trans_reply(char *outbuf, pipes_struct *p)
}
if((data_len = read_from_pipe( p, rdata, p->max_trans_reply)) < 0) {
- free(rdata);
+ SAFE_FREE(rdata);
return False;
}
send_trans_reply(outbuf, NULL, 0, rdata, data_len, p->out_data.current_pdu_len > data_len);
- free(rdata);
+ SAFE_FREE(rdata);
return True;
}
@@ -442,12 +442,9 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
DEBUG(0,("reply_trans: %s in getting secondary trans response.\n",
(smb_read_error == READ_ERROR) ? "error" : "timeout" ));
}
- if (params)
- free(params);
- if (data)
- free(data);
- if (setup)
- free(setup);
+ SAFE_FREE(params);
+ SAFE_FREE(data);
+ SAFE_FREE(setup);
END_PROFILE(SMBtrans);
return(ERROR_DOS(ERRSRV,ERRerror));
}
@@ -509,12 +506,9 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
}
- if (data)
- free(data);
- if (params)
- free(params);
- if (setup)
- free(setup);
+ SAFE_FREE(data);
+ SAFE_FREE(params);
+ SAFE_FREE(setup);
if (close_on_completion)
close_cnum(conn,vuid);
diff --git a/source/smbd/mangle.c b/source/smbd/mangle.c
index 7ef4107df7b..3d214d46589 100644
--- a/source/smbd/mangle.c
+++ b/source/smbd/mangle.c
@@ -465,7 +465,7 @@ static signed int cache_compare( ubi_btItemPtr ItemPtr, ubi_btNodePtr NodePtr )
static void cache_free_entry( ubi_trNodePtr WarrenZevon )
{
ZERO_STRUCTP(WarrenZevon);
- free( WarrenZevon );
+ SAFE_FREE( WarrenZevon );
} /* cache_free_entry */
/* ************************************************************************** **
@@ -632,7 +632,7 @@ BOOL check_mangled_cache( char *s )
{
/* Replace the saved_ext as it was truncated. */
(void)pstrcat( s, saved_ext );
- free(saved_ext);
+ SAFE_FREE(saved_ext);
}
return( False );
}
@@ -648,7 +648,7 @@ BOOL check_mangled_cache( char *s )
{
/* Replace the saved_ext as it was truncated. */
(void)pstrcat( s, saved_ext );
- free(saved_ext);
+ SAFE_FREE(saved_ext);
}
DEBUG( 3, ("as %s\n", s) );
@@ -1016,7 +1016,7 @@ BOOL name_map_mangle(char *OutName, BOOL need83, BOOL cache83, int snum)
if(tmp != NULL) {
cache_mangled_name(OutName, tmp);
- free(tmp);
+ SAFE_FREE(tmp);
}
}
diff --git a/source/smbd/notify_hash.c b/source/smbd/notify_hash.c
index 178dcecc823..90eb88ac814 100644
--- a/source/smbd/notify_hash.c
+++ b/source/smbd/notify_hash.c
@@ -195,7 +195,7 @@ static BOOL hash_check_notify(connection_struct *conn, uint16 vuid, char *path,
static void hash_remove_notify(void *datap)
{
- free(datap);
+ SAFE_FREE(datap);
}
/****************************************************************************
diff --git a/source/smbd/notify_kernel.c b/source/smbd/notify_kernel.c
index 224581abec4..96164a3199b 100644
--- a/source/smbd/notify_kernel.c
+++ b/source/smbd/notify_kernel.c
@@ -110,7 +110,7 @@ static void kernel_remove_notify(void *datap)
}
close(fd);
}
- free(data);
+ SAFE_FREE(data);
DEBUG(3,("removed kernel change notify fd=%d\n", fd));
}
diff --git a/source/smbd/open.c b/source/smbd/open.c
index 5b7844b83a2..309bc0be873 100644
--- a/source/smbd/open.c
+++ b/source/smbd/open.c
@@ -503,7 +503,7 @@ dev = %x, inode = %.0f\n", *p_oplock_request, share_entry->op_type, fname, (unsi
if(opb_ret == False) {
DEBUG(0,("open_mode_check: FAILED when breaking oplock (%x) on file %s, \
dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (double)inode));
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
errno = EACCES;
unix_ERR_class = ERRDOS;
unix_ERR_code = ERRbadshare;
@@ -522,7 +522,7 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
if we can too */
if(check_share_mode(conn, share_entry, share_mode, fname, fcbopen, p_flags) == False) {
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
errno = EACCES;
return -1;
}
@@ -530,7 +530,7 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
} /* end for */
if(broke_oplock) {
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
num_share_modes = get_share_modes(conn, dev, inode, &old_shares);
oplock_contention_count++;
@@ -566,7 +566,7 @@ dev = %x, inode = %.0f. Deleting it to continue...\n", (int)broken_entry.pid, fn
* other process's entry.
*/
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
num_share_modes = get_share_modes(conn, dev, inode, &old_shares);
break;
}
@@ -575,8 +575,7 @@ dev = %x, inode = %.0f. Deleting it to continue...\n", (int)broken_entry.pid, fn
} while(broke_oplock);
- if(old_shares != 0)
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
/*
* Refuse to grant an oplock in case the contention limit is
@@ -1282,7 +1281,7 @@ dev = %x, inode = %.0f\n", share_entry->op_type, fname, (unsigned int)dev, (doub
DEBUG(0,("check_file_sharing: FAILED when breaking oplock (%x) on file %s, \
dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (double)inode));
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
return False;
}
lock_share_entry(conn, dev, inode);
@@ -1312,7 +1311,7 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
if(broke_oplock)
{
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
num_share_modes = get_share_modes(conn, dev, inode, &old_shares);
}
} while(broke_oplock);
@@ -1333,7 +1332,6 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
free_and_exit:
unlock_share_entry(conn, dev, inode);
- if(old_shares != NULL)
- free((char *)old_shares);
+ SAFE_FREE((char *)old_shares);
return(ret);
}
diff --git a/source/smbd/oplock.c b/source/smbd/oplock.c
index 0fe2de94320..9d285d4ae38 100644
--- a/source/smbd/oplock.c
+++ b/source/smbd/oplock.c
@@ -1162,8 +1162,7 @@ void release_level_2_oplocks_on_change(files_struct *fsp)
}
}
- if (share_list)
- free((char *)share_list);
+ SAFE_FREE((char *)share_list);
unlock_share_entry_fsp(fsp);
/* Paranoia check... */
diff --git a/source/smbd/password.c b/source/smbd/password.c
index 8661811484f..d6d4c931748 100644
--- a/source/smbd/password.c
+++ b/source/smbd/password.c
@@ -197,7 +197,7 @@ NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups,
num_sids += sup_tok->num_sids;
if ((token->user_sids = (DOM_SID *)malloc( num_sids*sizeof(DOM_SID))) == NULL) {
- free(token);
+ SAFE_FREE(token);
return NULL;
}
@@ -801,7 +801,7 @@ and given password ok\n", user));
}
}
- free(user_list);
+ SAFE_FREE(user_list);
}
/* check for a previously validated username/password pair */
@@ -1067,7 +1067,7 @@ struct cli_state *server_cryptkey(void)
}
}
- free(pserver);
+ SAFE_FREE(pserver);
if (!connected_ok) {
DEBUG(0,("password server not available\n"));
@@ -1432,9 +1432,7 @@ static BOOL find_connect_pdc(struct cli_state *pcli, unsigned char *trust_passwd
}
}
- if(ip_list != NULL)
- free((char *)ip_list);
-
+ SAFE_FREE((char *)ip_list);
return connected_ok;
}
@@ -1607,7 +1605,7 @@ BOOL domain_client_validate( char *user, char *domain,
ptok->num_sids = (size_t)info3.num_groups2;
if ((ptok->user_sids = (DOM_SID *)malloc( sizeof(DOM_SID) * ptok->num_sids )) == NULL) {
DEBUG(0, ("domain_client_validate: Out of memory allocating group SIDS\n"));
- free(ptok);
+ SAFE_FREE(ptok);
return False;
}
diff --git a/source/smbd/process.c b/source/smbd/process.c
index 04780cf5d5f..b6a0c28f18e 100644
--- a/source/smbd/process.c
+++ b/source/smbd/process.c
@@ -85,7 +85,7 @@ static BOOL push_message(ubi_slList *list_head, char *buf, int msg_len)
if(msg->msg_buf == NULL)
{
DEBUG(0,("push_message: malloc fail (2)\n"));
- free((char *)msg);
+ SAFE_FREE((char *)msg);
return False;
}
@@ -178,8 +178,8 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
memcpy(buffer, msg->msg_buf, MIN(buffer_len, msg->msg_len));
/* Free the message we just copied. */
- free((char *)msg->msg_buf);
- free((char *)msg);
+ SAFE_FREE((char *)msg->msg_buf);
+ SAFE_FREE((char *)msg);
DEBUG(5,("receive_message_or_smb: returning queued smb message.\n"));
return True;
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index 1105d8884cd..4e286afe9f1 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -4815,8 +4815,7 @@ int reply_writebs(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
if (nwritten < (ssize_t)numtowrite) {
if(write_through) {
/* We are returning an error - we can delete the aux struct */
- if (wbms)
- free((char *)wbms);
+ SAFE_FREE((char *)wbms);
fsp->wbmpx_ptr = NULL;
END_PROFILE(SMBwriteBs);
return(ERROR_DOS(ERRHRD,ERRdiskfull));
@@ -4835,7 +4834,7 @@ int reply_writebs(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
send_response = True;
}
- free((char *)wbms);
+ SAFE_FREE((char *)wbms);
fsp->wbmpx_ptr = NULL;
}
diff --git a/source/smbd/vfs.c b/source/smbd/vfs.c
index 54e11976d7b..499072dcd8f 100644
--- a/source/smbd/vfs.c
+++ b/source/smbd/vfs.c
@@ -679,7 +679,7 @@ static void array_promote(char *array,int elsize,int element)
memcpy(p,array + element * elsize, elsize);
memmove(array + elsize,array,elsize*element);
memcpy(array,p,elsize);
- free(p);
+ SAFE_FREE(p);
}
/*******************************************************************
diff --git a/source/smbwrapper/smbw.c b/source/smbwrapper/smbw.c
index da205560495..ae2f5f01581 100644
--- a/source/smbwrapper/smbw.c
+++ b/source/smbwrapper/smbw.c
@@ -282,13 +282,13 @@ static char *smbw_find_workgroup(void)
slprintf(server, sizeof(server), "%s#1D", name);
if (smbw_server(server, "IPC$")) {
smbw_setshared("WORKGROUP", name);
- free(ip_list);
+ SAFE_FREE(ip_list);
return name;
}
}
}
- free(ip_list);
+ SAFE_FREE(ip_list);
return p;
}
@@ -607,9 +607,9 @@ struct smbw_server *smbw_server(char *server, char *share)
cli_shutdown(&c);
if (!srv) return NULL;
- if (srv->server_name) free(srv->server_name);
- if (srv->share_name) free(srv->share_name);
- free(srv);
+ SAFE_FREE(srv->server_name);
+ SAFE_FREE(srv->share_name);
+ SAFE_FREE(srv);
return NULL;
}
@@ -723,12 +723,10 @@ int smbw_open(const char *fname, int flags, mode_t mode)
}
if (file) {
if (file->f) {
- if (file->f->fname) {
- free(file->f->fname);
- }
- free(file->f);
+ SAFE_FREE(file->f->fname);
+ SAFE_FREE(file->f);
}
- free(file);
+ SAFE_FREE(file);
}
smbw_busy--;
return -1;
@@ -893,11 +891,11 @@ int smbw_close(int fd)
file->f->ref_count--;
if (file->f->ref_count == 0) {
- free(file->f->fname);
- free(file->f);
+ SAFE_FREE(file->f->fname);
+ SAFE_FREE(file->f);
}
ZERO_STRUCTP(file);
- free(file);
+ SAFE_FREE(file);
smbw_busy--;
@@ -1385,14 +1383,14 @@ static void smbw_srv_close(struct smbw_server *srv)
cli_shutdown(&srv->cli);
- free(srv->server_name);
- free(srv->share_name);
+ SAFE_FREE(srv->server_name);
+ SAFE_FREE(srv->share_name);
DLIST_REMOVE(smbw_srvs, srv);
ZERO_STRUCTP(srv);
- free(srv);
+ SAFE_FREE(srv);
smbw_busy--;
}
diff --git a/source/smbwrapper/smbw_dir.c b/source/smbwrapper/smbw_dir.c
index a1069c535e6..a056a2ae752 100644
--- a/source/smbwrapper/smbw_dir.c
+++ b/source/smbwrapper/smbw_dir.c
@@ -63,12 +63,10 @@ free a smbw_dir structure and all entries
*******************************************************/
static void free_dir(struct smbw_dir *dir)
{
- if (dir->list) {
- free(dir->list);
- }
- if (dir->path) free(dir->path);
+ SAFE_FREE(dir->list);
+ SAFE_FREE(dir->path);
ZERO_STRUCTP(dir);
- free(dir);
+ SAFE_FREE(dir);
}
diff --git a/source/tdb/spinlock.c b/source/tdb/spinlock.c
index 0b2994f8f58..b00d115dde7 100644
--- a/source/tdb/spinlock.c
+++ b/source/tdb/spinlock.c
@@ -384,11 +384,11 @@ int tdb_create_rwlocks(int fd, unsigned int hash_size)
/* Write it out (appending to end) */
if (write(fd, rwlocks, size) != size) {
- free(rwlocks);
+ SAFE_FREE(rwlocks);
return -1;
}
smp_machine = this_is_smp();
- free(rwlocks);
+ SAFE_FREE(rwlocks);
return 0;
}
diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c
index 28425c29892..16cda03a3c1 100644
--- a/source/tdb/tdb.c
+++ b/source/tdb/tdb.c
@@ -343,7 +343,7 @@ static char *tdb_alloc_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_len len)
return TDB_ERRCODE(TDB_ERR_OOM, buf);
}
if (tdb_read(tdb, offset, buf, len, 0) == -1) {
- free(buf);
+ SAFE_FREE(buf);
return NULL;
}
return buf;
@@ -855,7 +855,7 @@ static int tdb_new_database(TDB_CONTEXT *tdb, int hash_size)
ret = tdb_create_rwlocks(tdb->fd, hash_size);
fail:
- free(newdb);
+ SAFE_FREE(newdb);
return ret;
}
@@ -884,10 +884,10 @@ static tdb_off tdb_find(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash,
return 0;
if (memcmp(key.dptr, k, key.dsize) == 0) {
- free(k);
+ SAFE_FREE(k);
return rec_ptr;
}
- free(k);
+ SAFE_FREE(k);
}
rec_ptr = r->next;
}
@@ -1195,10 +1195,10 @@ int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *state)
/* They want us to terminate traversal */
unlock_record(tdb, tl.off);
tdb->travlocks.next = tl.next;
- free(key.dptr);
+ SAFE_FREE(key.dptr);
return count;
}
- free(key.dptr);
+ SAFE_FREE(key.dptr);
}
tdb->travlocks.next = tl.next;
if (ret < 0)
@@ -1248,8 +1248,7 @@ TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA oldkey)
tdb->travlocks.off = 0;
}
- if (k)
- free(k);
+ SAFE_FREE(k);
}
if (!tdb->travlocks.off) {
@@ -1367,8 +1366,7 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
ret = -1;
}
out:
- if (p)
- free(p);
+ SAFE_FREE(p);
tdb_unlock(tdb, BUCKET(hash), F_WRLCK);
return ret;
}
@@ -1552,16 +1550,14 @@ TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
if (tdb->map_ptr) {
if (tdb->flags & TDB_INTERNAL)
- free(tdb->map_ptr);
+ SAFE_FREE(tdb->map_ptr);
else
tdb_munmap(tdb);
}
- if (tdb->name)
- free(tdb->name);
+ SAFE_FREE(tdb->name);
if (tdb->fd != -1)
close(tdb->fd);
- if (tdb->locked)
- free(tdb->locked);
+ SAFE_FREE(tdb->locked);
errno = save_errno;
return NULL;
}
@@ -1575,18 +1571,15 @@ int tdb_close(TDB_CONTEXT *tdb)
if (tdb->map_ptr) {
if (tdb->flags & TDB_INTERNAL)
- free(tdb->map_ptr);
+ SAFE_FREE(tdb->map_ptr);
else
tdb_munmap(tdb);
}
- if (tdb->name)
- free(tdb->name);
+ SAFE_FREE(tdb->name);
if (tdb->fd != -1)
ret = close(tdb->fd);
- if (tdb->locked)
- free(tdb->locked);
- if (tdb->lockedkeys)
- free(tdb->lockedkeys);
+ SAFE_FREE(tdb->locked);
+ SAFE_FREE(tdb->lockedkeys);
/* Remove from contexts list */
for (i = &tdbs; *i; i = &(*i)->next) {
@@ -1597,7 +1590,7 @@ int tdb_close(TDB_CONTEXT *tdb)
}
memset(tdb, 0, sizeof(*tdb));
- free(tdb);
+ SAFE_FREE(tdb);
return ret;
}
@@ -1662,8 +1655,7 @@ int tdb_lockkeys(TDB_CONTEXT *tdb, u32 number, TDB_DATA keys[])
if (i < number) {
for ( j = 0; j < i; j++)
tdb_unlock(tdb, j, F_WRLCK);
- free(tdb->lockedkeys);
- tdb->lockedkeys = NULL;
+ SAFE_FREE(tdb->lockedkeys);
return TDB_ERRCODE(TDB_ERR_NOLOCK, -1);
}
return 0;
@@ -1675,8 +1667,7 @@ void tdb_unlockkeys(TDB_CONTEXT *tdb)
u32 i;
for (i = 0; i < tdb->lockedkeys[0]; i++)
tdb_unlock(tdb, tdb->lockedkeys[i+1], F_WRLCK);
- free(tdb->lockedkeys);
- tdb->lockedkeys = NULL;
+ SAFE_FREE(tdb->lockedkeys);
}
/* lock/unlock one hash chain. This is meant to be used to reduce
diff --git a/source/tdb/tdb.h b/source/tdb/tdb.h
index 6877e5cdf49..7c1c7bd8c2b 100644
--- a/source/tdb/tdb.h
+++ b/source/tdb/tdb.h
@@ -134,6 +134,12 @@ void tdb_dump_all(TDB_CONTEXT *tdb);
void tdb_printfreelist(TDB_CONTEXT *tdb);
extern TDB_DATA tdb_null;
+
+/* free memory if the pointer is valid and zero the pointer */
+#ifndef SAFE_FREE
+#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/source/tdb/tdbtest.c b/source/tdb/tdbtest.c
index 0741073ce11..80e9c8d07e6 100644
--- a/source/tdb/tdbtest.c
+++ b/source/tdb/tdbtest.c
@@ -71,9 +71,9 @@ static void compare_db(void)
}
nextkey = tdb_nextkey(db, key);
- free(key.dptr);
- free(d.dptr);
- free(gd.dptr);
+ SAFE_FREE(key.dptr);
+ SAFE_FREE(d.dptr);
+ SAFE_FREE(gd.dptr);
key = nextkey;
}
@@ -92,9 +92,9 @@ static void compare_db(void)
}
gnextkey = gdbm_nextkey(gdbm, gkey);
- free(gkey.dptr);
- free(gd.dptr);
- free(d.dptr);
+ SAFE_FREE(gkey.dptr);
+ SAFE_FREE(gd.dptr);
+ SAFE_FREE(d.dptr);
gkey = gnextkey;
}
}
@@ -138,11 +138,11 @@ static void addrec_db(void)
}
} else {
data = tdb_fetch(db, key);
- if (data.dptr) free(data.dptr);
+ SAFE_FREE(data.dptr);
}
- free(k);
- free(d);
+ SAFE_FREE(k);
+ SAFE_FREE(d);
}
static void addrec_gdbm(void)
@@ -171,11 +171,11 @@ static void addrec_gdbm(void)
}
} else {
data = gdbm_fetch(gdbm, key);
- if (data.dptr) free(data.dptr);
+ SAFE_FREE(data.dptr);
}
- free(k);
- free(d);
+ SAFE_FREE(k);
+ SAFE_FREE(d);
}
static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
diff --git a/source/tdb/tdbtorture.c b/source/tdb/tdbtorture.c
index c4d912a1477..0cdb60db6ee 100644
--- a/source/tdb/tdbtorture.c
+++ b/source/tdb/tdbtorture.c
@@ -43,7 +43,7 @@ static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
char *ptr;
asprintf(&ptr,"xterm -e gdb /proc/%d/exe %d", getpid(), getpid());
system(ptr);
- free(ptr);
+ SAFE_FREE(ptr);
}
#endif
}
@@ -129,7 +129,7 @@ static void addrec_db(void)
if (tdb_store(db, key, data, TDB_REPLACE) != 0) {
fatal("tdb_store failed");
}
- if (data.dptr) free(data.dptr);
+ SAFE_FREE(data.dptr);
tdb_chainunlock(db, lockkey);
goto next;
}
@@ -143,12 +143,12 @@ static void addrec_db(void)
#endif
data = tdb_fetch(db, key);
- if (data.dptr) free(data.dptr);
+ SAFE_FREE(data.dptr);
next:
- free(k);
- free(d);
- free(s);
+ SAFE_FREE(k);
+ SAFE_FREE(d);
+ SAFE_FREE(s);
}
static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf,
diff --git a/source/tdb/tdbutil.c b/source/tdb/tdbutil.c
index 9e24562118f..80a656e432b 100644
--- a/source/tdb/tdbutil.c
+++ b/source/tdb/tdbutil.c
@@ -68,7 +68,7 @@ int tdb_fetch_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len)
return -1;
memcpy(&ret, data.dptr, sizeof(int));
- free(data.dptr);
+ SAFE_FREE(data.dptr);
return ret;
}
@@ -374,7 +374,7 @@ static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
return;
DEBUG(level, ("tdb(%s): %s", tdb->name, ptr));
- free(ptr);
+ SAFE_FREE(ptr);
}
/****************************************************************************
diff --git a/source/utils/locktest.c b/source/utils/locktest.c
index 80dbba1e37e..4697067e881 100644
--- a/source/utils/locktest.c
+++ b/source/utils/locktest.c
@@ -217,7 +217,7 @@ static void reconnect(struct cli_state *cli[NSERVERS][NCONNECTIONS], int fnum[NS
}
cli_ulogoff(cli[server][conn]);
cli_shutdown(cli[server][conn]);
- free(cli[server][conn]);
+ SAFE_FREE(cli[server][conn]);
cli[server][conn] = NULL;
}
cli[server][conn] = connect_one(share[server]);
diff --git a/source/utils/locktest2.c b/source/utils/locktest2.c
index 0391aa29426..91083bc3ec4 100644
--- a/source/utils/locktest2.c
+++ b/source/utils/locktest2.c
@@ -268,7 +268,7 @@ static void reconnect(struct cli_state *cli[NSERVERS][NCONNECTIONS],
}
cli_ulogoff(cli[server][conn]);
cli_shutdown(cli[server][conn]);
- free(cli[server][conn]);
+ SAFE_FREE(cli[server][conn]);
cli[server][conn] = NULL;
}
cli[server][conn] = connect_one(share[server]);
diff --git a/source/utils/make_printerdef.c b/source/utils/make_printerdef.c
index a449a24fcdd..f5d40ea3f00 100644
--- a/source/utils/make_printerdef.c
+++ b/source/utils/make_printerdef.c
@@ -307,7 +307,7 @@ static char *find_desc(FILE *fichier,char *text)
if (!strcmp(text,long_desc))
found=1;
}
- free(chaine);
+ SAFE_FREE(chaine);
if (!found || !crap) return(NULL);
while(*crap==' ') crap++;
pstrcpy(short_desc,crap);
diff --git a/source/utils/make_smbcodepage.c b/source/utils/make_smbcodepage.c
index 1bd3edc2631..46b0bf227bb 100644
--- a/source/utils/make_smbcodepage.c
+++ b/source/utils/make_smbcodepage.c
@@ -99,7 +99,7 @@ static int clean_data( char **buf, size_t *size)
newbuf_p += (strlen(newbuf_p) + 1);
}
- free(*buf);
+ SAFE_FREE(*buf);
*buf = newbuf;
return num_lines;
}
@@ -209,7 +209,7 @@ The maximum size I will believe is 100k.\n", prog_name, size);
{
fprintf(stderr, "%s: read failed for file %s. Error was %s.\n", prog_name,
input_file, strerror(errno));
- free((char *)buf);
+ SAFE_FREE((char *)buf);
fclose(fp);
exit(1);
}
@@ -303,7 +303,7 @@ definition file. File %s has %d.\n", prog_name, MAXCODEPAGELINES, input_file, nu
fclose(fp);
- free(orig_buf);
+ SAFE_FREE(orig_buf);
return 0;
}
diff --git a/source/utils/make_unicodemap.c b/source/utils/make_unicodemap.c
index 3584facbf62..926f21d85c5 100644
--- a/source/utils/make_unicodemap.c
+++ b/source/utils/make_unicodemap.c
@@ -96,7 +96,7 @@ static size_t clean_data( char **buf, size_t *size)
newbuf_p += (strlen(newbuf_p) + 1);
}
- free(*buf);
+ SAFE_FREE(*buf);
*buf = newbuf;
return num_lines;
}
@@ -172,7 +172,7 @@ static int do_compile(const char *codepage, const char *input_file, const char *
if(fread( buf, 1, size, fp) != size) {
fprintf(stderr, "%s: read failed for file %s. Error was %s.\n", prog_name,
input_file, strerror(errno));
- free((char *)buf);
+ SAFE_FREE((char *)buf);
fclose(fp);
exit(1);
}
@@ -289,8 +289,8 @@ static int do_compile(const char *codepage, const char *input_file, const char *
fclose(fp);
- free(orig_buf);
- free(output_buf);
+ SAFE_FREE(orig_buf);
+ SAFE_FREE(output_buf);
return 0;
}
diff --git a/source/utils/nmblookup.c b/source/utils/nmblookup.c
index cf5e8288dd7..2e5bee04f50 100644
--- a/source/utils/nmblookup.c
+++ b/source/utils/nmblookup.c
@@ -123,7 +123,7 @@ static void do_node_status(int fd, char *name, int type, struct in_addr ip)
cleanname,status[i].type,
node_status_flags(status[i].flags));
}
- free(status);
+ SAFE_FREE(status);
}
printf("\n");
}
diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c
index 09c61ff28d3..f65f65fd330 100644
--- a/source/utils/smbcacls.c
+++ b/source/utils/smbcacls.c
@@ -328,7 +328,7 @@ static BOOL add_ace(SEC_ACL **the_acl, SEC_ACE *ace)
memcpy(aces, (*the_acl)->ace, (*the_acl)->num_aces * sizeof(SEC_ACE));
memcpy(aces+(*the_acl)->num_aces, ace, sizeof(SEC_ACE));
new = make_sec_acl(ctx,(*the_acl)->revision,1+(*the_acl)->num_aces, aces);
- free(aces);
+ SAFE_FREE(aces);
(*the_acl) = new;
return True;
}
@@ -391,8 +391,8 @@ static SEC_DESC *sec_desc_parse(char *str)
ret = make_sec_desc(ctx,revision, owner_sid, grp_sid,
NULL, dacl, &sd_size);
- if (grp_sid) free(grp_sid);
- if (owner_sid) free(owner_sid);
+ SAFE_FREE(grp_sid);
+ SAFE_FREE(owner_sid);
return ret;
}
@@ -605,10 +605,8 @@ static int cacl_set(struct cli_state *cli, char *filename,
}
old->dacl->num_aces--;
if (old->dacl->num_aces == 0) {
- free(old->dacl->ace);
- old->dacl->ace=NULL;
- free(old->dacl);
- old->dacl = NULL;
+ SAFE_FREE(old->dacl->ace);
+ SAFE_FREE(old->dacl);
old->off_dacl = 0;
}
found = True;
diff --git a/source/utils/torture.c b/source/utils/torture.c
index f85a73293dd..185cd93d164 100644
--- a/source/utils/torture.c
+++ b/source/utils/torture.c
@@ -3646,8 +3646,8 @@ int cli_setfileinfo_test(struct cli_state *cli, int fnum, int level, char *data,
return False;
}
- if (rdata) free(rdata);
- if (rparam) free(rparam);
+ SAFE_FREE(rdata);
+ SAFE_FREE(rparam);
return True;
}
diff --git a/source/web/cgi.c b/source/web/cgi.c
index 70299f14c34..0b86265a1e5 100644
--- a/source/web/cgi.c
+++ b/source/web/cgi.c
@@ -168,7 +168,7 @@ void cgi_load_variables(FILE *f1)
variables[num_variables].name = strdup(line);
variables[num_variables].value = strdup(p+1);
- free(line);
+ SAFE_FREE(line);
if (!variables[num_variables].name ||
!variables[num_variables].value)
diff --git a/source/web/diagnose.c b/source/web/diagnose.c
index f22fe0d9b25..bf2e6da17d1 100644
--- a/source/web/diagnose.c
+++ b/source/web/diagnose.c
@@ -36,7 +36,7 @@ BOOL nmbd_running(void)
if ((ip_list = name_query(fd, "__SAMBA__", 0,
True, True, loopback_ip,
&count)) != NULL) {
- free(ip_list);
+ SAFE_FREE(ip_list);
close(fd);
return True;
}