SAFE_FREE patch
Andreas Moroder
andreas.moroder at sb-brixen.it
Sun Dec 23 22:31:03 GMT 2001
Hello,
in head in few places free() is used instead of SAFE_FREE. According to Simo
Sorce it is better to use SAFE_FREE.
In the next lines you will find a patch against HEAD from Sat. 22 9.00 CET.
Merry Christmas
Frohe Weihnacht
Buon Natale
Andreas
diff -r -u --exclude-from=diffex source/auth/auth_domain.c
new/auth/auth_domain.c
--- source/auth/auth_domain.c Fri Dec 14 22:37:56 2001
+++ new/auth/auth_domain.c Sat Dec 22 10:00:21 2001
@@ -343,7 +343,7 @@
if (!(pass = Get_Pwnam(dom_user)))
pass = Get_Pwnam(user_info->internal_username.str);
- free(dom_user);
+ SAFE_FREE(dom_user);
if (pass) {
make_server_info_pw(server_info, pass);
diff -r -u --exclude-from=diffex source/auth/auth_util.c new/auth/auth_util.c
--- source/auth/auth_util.c Wed Dec 19 10:53:11 2001
+++ new/auth/auth_util.c Sat Dec 22 10:00:44 2001
@@ -234,7 +234,7 @@
} else {
domain = lp_workgroup();
}
- free(user);
+ SAFE_FREE(user);
} else {
domain = lp_workgroup();
}
diff -r -u --exclude-from=diffex source/intl/lang_tdb.c new/intl/lang_tdb.c
--- source/intl/lang_tdb.c Tue Oct 23 21:10:29 2001
+++ new/intl/lang_tdb.c Sat Dec 22 09:53:14 2001
@@ -125,7 +125,7 @@
asprintf(&msg_path, "%s.msg", lib_path((char *)lang));
if (stat(msg_path, &st) != 0) {
/* the msg file isn't available */
- free(msg_path);
+ SAFE_FREE(msg_path);
return False;
}
@@ -135,14 +135,14 @@
tdb = tdb_open_log(path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0644);
if (!tdb) {
tdb = tdb_open_log(path, 0, TDB_DEFAULT, O_RDONLY, 0);
- free(path);
- free(msg_path);
+ SAFE_FREE(path);
+ SAFE_FREE(msg_path);
if (!tdb) return False;
current_lang = strdup(lang);
return True;
}
- free(path);
+ SAFE_FREE(path);
loadtime = tdb_fetch_int(tdb, "/LOADTIME/");
@@ -150,7 +150,7 @@
load_msg(msg_path);
tdb_store_int(tdb, "/LOADTIME/", (int)time(NULL));
}
- free(msg_path);
+ SAFE_FREE(msg_path);
current_lang = strdup(lang);
@@ -185,7 +185,7 @@
void lang_msg_free(const char *msgstr)
{
if (!tdb) return;
- free((void *)msgstr);
+ SAFE_FREE((void *)msgstr);
}
diff -r -u --exclude-from=diffex source/lib/util_file.c new/lib/util_file.c
--- source/lib/util_file.c Mon Dec 17 12:13:57 2001
+++ new/lib/util_file.c Sat Dec 22 09:52:16 2001
@@ -450,7 +450,7 @@
if (!p || s2 != size) {
DEBUG(1,("incorrect size for %s - got %d expected %d\n",
fname, s2, size));
- if (p) free(p);
+ SAFE_FREE(p);
return NULL;
}
}
diff -r -u --exclude-from=diffex source/lib/util_sid.c new/lib/util_sid.c
--- source/lib/util_sid.c Wed Dec 19 09:37:03 2001
+++ new/lib/util_sid.c Sat Dec 22 09:51:13 2001
@@ -704,7 +704,7 @@
if (!buf) return NULL;
sid_linearize(buf, len, sid);
s = binary_string(buf, len);
- free(buf);
+ SAFE_FREE(buf);
return s;
}
diff -r -u --exclude-from=diffex source/lib/util_unistr.c new/lib/util_unistr.c
--- source/lib/util_unistr.c Thu Dec 20 11:02:30 2001
+++ new/lib/util_unistr.c Sat Dec 22 09:51:50 2001
@@ -99,7 +99,7 @@
return;
}
- if (valid_table) free(valid_table);
+ SAFE_FREE(valid_table);
DEBUG(2,("creating default valid table\n"));
valid_table = malloc(0x10000);
diff -r -u --exclude-from=diffex source/libads/ads_struct.c
new/libads/ads_struct.c
--- source/libads/ads_struct.c Wed Dec 19 13:21:10 2001
+++ new/libads/ads_struct.c Sat Dec 22 09:46:07 2001
@@ -53,7 +53,7 @@
strlcat(ret, p, len);
}
- free(r);
+ SAFE_FREE(r);
return ret;
}
diff -r -u --exclude-from=diffex source/libsmb/asn1.c new/libsmb/asn1.c
--- source/libsmb/asn1.c Tue Nov 20 09:46:02 2001
+++ new/libsmb/asn1.c Sat Dec 22 09:45:13 2001
@@ -104,7 +104,7 @@
}
data->nesting = nesting->next;
- free(nesting);
+ SAFE_FREE(nesting);
return True;
}
@@ -284,7 +284,7 @@
}
data->nesting = nesting->next;
- free(nesting);
+ SAFE_FREE(nesting);
return True;
}
@@ -342,7 +342,7 @@
data->has_error = True;
return False;
}
- free(id);
+ SAFE_FREE(id);
return True;
}
diff -r -u --exclude-from=diffex source/libsmb/cliconnect.c
new/libsmb/cliconnect.c
--- source/libsmb/cliconnect.c Fri Dec 21 13:29:51 2001
+++ new/libsmb/cliconnect.c Sat Dec 22 09:44:15 2001
@@ -540,7 +540,7 @@
strcmp(OIDs[i], OID_KERBEROS5) == 0) {
got_kerberos_mechanism = True;
}
- free(OIDs[i]);
+ SAFE_FREE(OIDs[i]);
}
DEBUG(3,("got principal=%s\n", principal));
@@ -552,7 +552,7 @@
}
#endif
- free(principal);
+ SAFE_FREE(principal);
ntlmssp:
diff -r -u --exclude-from=diffex source/libsmb/clientgen.c
new/libsmb/clientgen.c
--- source/libsmb/clientgen.c Tue Nov 27 04:29:20 2001
+++ new/libsmb/clientgen.c Sat Dec 22 09:43:31 2001
@@ -257,7 +257,7 @@
allocated = cli->allocated;
ZERO_STRUCTP(cli);
if (allocated) {
- free(cli);
+ SAFE_FREE(cli);
}
}
diff -r -u --exclude-from=diffex source/passdb/pdb_smbpasswd.c
new/passdb/pdb_smbpasswd.c
--- source/passdb/pdb_smbpasswd.c Thu Dec 6 14:09:14 2001
+++ new/passdb/pdb_smbpasswd.c Sat Dec 22 09:48:14 2001
@@ -631,11 +631,11 @@
}
endsmbfilepwent(fp, &pw_file_lock_depth);
- free(new_entry);
+ SAFE_FREE(new_entry);
return False;
}
- free(new_entry);
+ SAFE_FREE(new_entry);
endsmbfilepwent(fp, &pw_file_lock_depth);
return True;
}
@@ -1094,11 +1094,11 @@
unlink(pfile2);
endsmbfilepwent(fp, &pw_file_lock_depth);
endsmbfilepwent(fp_write, &pfile2_lockdepth);
- free(new_entry);
+ SAFE_FREE(new_entry);
return False;
}
- free(new_entry);
+ SAFE_FREE(new_entry);
}
/*
diff -r -u --exclude-from=diffex source/printing/pcap.c new/printing/pcap.c
--- source/printing/pcap.c Tue Oct 2 06:29:34 2001
+++ new/printing/pcap.c Sat Dec 22 10:02:36 2001
@@ -112,7 +112,7 @@
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 @@
if ((pfile = x_fopen(psz, O_RDONLY, 0)) == 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 @@
/*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 @@
{
/* 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,8 +223,8 @@
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);
}
@@ -289,7 +289,7 @@
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;
@@ -308,7 +308,7 @@
{
/* normalise the case */
pstrcpy(pszPrintername,p);
- free(line);
+ SAFE_FREE(line);
x_fclose(pfile);
return(True);
}
@@ -370,7 +370,7 @@
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 -r -u --exclude-from=diffex source/printing/printing.c
new/printing/printing.c
--- source/printing/printing.c Fri Dec 21 01:37:09 2001
+++ new/printing/printing.c Sat Dec 22 09:56:21 2001
@@ -105,7 +105,7 @@
if (!ret.dptr || ret.dsize != sizeof(pjob)) return NULL;
memcpy(&pjob, ret.dptr, sizeof(pjob));
- free(ret.dptr);
+ SAFE_FREE(ret.dptr);
return &pjob;
}
@@ -285,7 +285,7 @@
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;
@@ -839,7 +839,7 @@
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;
}
@@ -1203,7 +1203,7 @@
if (data.dsize == sizeof(*status)) {
memcpy(status, data.dptr, sizeof(*status));
}
- free(data.dptr);
+ SAFE_FREE(data.dptr);
}
/*
diff -r -u --exclude-from=diffex source/smbd/error.c new/smbd/error.c
--- source/smbd/error.c Sat Dec 22 09:16:46 2001
+++ new/smbd/error.c Sat Dec 22 09:42:58 2001
@@ -37,7 +37,7 @@
int32 err = wbmpx->wr_error;
/* We can now delete the auxiliary struct */
- free((char *)wbmpx);
+ SAFE_FREE((char *)wbmpx);
fsp->wbmpx_ptr = NULL;
return error_packet(outbuf,NT_STATUS_OK,eclass,err,line,file);
}
diff -r -u --exclude-from=diffex source/smbd/negprot.c new/smbd/negprot.c
--- source/smbd/negprot.c Sat Dec 22 09:16:52 2001
+++ new/smbd/negprot.c Sat Dec 22 09:41:21 2001
@@ -194,7 +194,7 @@
blob = spnego_gen_negTokenInit(guid,
lp_security()==SEC_ADS ?
OIDs_krb5 : OIDs_plain,
principal);
- free(principal);
+ SAFE_FREE(principal);
ads_destroy(&ads);
}
memcpy(p, blob.data, blob.length);
diff -r -u --exclude-from=diffex source/smbd/notify_hash.c
new/smbd/notify_hash.c
--- source/smbd/notify_hash.c Sat Oct 27 09:17:21 2001
+++ new/smbd/notify_hash.c Sat Dec 22 09:59:52 2001
@@ -195,7 +195,7 @@
static void hash_remove_notify(void *datap)
{
- free(datap);
+ SAFE_FREE(datap);
}
/****************************************************************************
diff -r -u --exclude-from=diffex source/smbd/password.c new/smbd/password.c
--- source/smbd/password.c Sat Dec 22 09:16:56 2001
+++ new/smbd/password.c Sat Dec 22 09:40:47 2001
@@ -232,7 +232,7 @@
if (!puid || !pgid) {
DEBUG(0,("Attempted session setup with invalid user. No
uid/gid in SAM_ACCOUNT\n"));
- free(vuser);
+ SAFE_FREE(vuser);
return UID_FIELD_INVALID;
}
diff -r -u --exclude-from=diffex source/smbd/reply.c new/smbd/reply.c
--- source/smbd/reply.c Sat Dec 22 09:17:03 2001
+++ new/smbd/reply.c Sat Dec 22 09:41:59 2001
@@ -4120,8 +4120,7 @@
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));
@@ -4140,7 +4139,7 @@
send_response = True;
}
- free((char *)wbms);
+ SAFE_FREE((char *)wbms);
fsp->wbmpx_ptr = NULL;
}
diff -r -u --exclude-from=diffex source/smbd/sesssetup.c new/smbd/sesssetup.c
--- source/smbd/sesssetup.c Sat Dec 22 09:17:06 2001
+++ new/smbd/sesssetup.c Sat Dec 22 09:42:21 2001
@@ -247,7 +247,7 @@
strcmp(OID_KERBEROS5_OLD, OIDs[i]) == 0) {
got_kerberos = True;
}
- free(OIDs[i]);
+ SAFE_FREE(OIDs[i]);
}
DEBUG(3,("Got secblob of size %d\n", secblob.length));
diff -r -u --exclude-from=diffex source/tdb/tdb.c new/tdb/tdb.c
--- source/tdb/tdb.c Thu Dec 13 03:34:43 2001
+++ new/tdb/tdb.c Sat Dec 22 09:54:59 2001
@@ -343,7 +343,7 @@
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 @@
ret = tdb_create_rwlocks(tdb->fd, hash_size);
fail:
- free(newdb);
+ SAFE_FREE(newdb);
return ret;
}
@@ -884,10 +884,10 @@
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 @@
/* 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->travlocks.off = 0;
}
- if (k)
- free(k);
+ SAFE_FREE(k);
}
if (!tdb->travlocks.off) {
@@ -1367,8 +1366,7 @@
ret = -1;
}
out:
- if (p)
- free(p);
+ SAFE_FREE(p);
tdb_unlock(tdb, BUCKET(hash), F_WRLCK);
return ret;
}
@@ -1552,16 +1550,14 @@
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,16 @@
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 +1591,7 @@
}
memset(tdb, 0, sizeof(*tdb));
- free(tdb);
+ SAFE_FREE(tdb);
return ret;
}
@@ -1662,7 +1656,7 @@
if (i < number) {
for ( j = 0; j < i; j++)
tdb_unlock(tdb, j, F_WRLCK);
- free(tdb->lockedkeys);
+ SAFE_FREE(tdb->lockedkeys);
tdb->lockedkeys = NULL;
return TDB_ERRCODE(TDB_ERR_NOLOCK, -1);
}
@@ -1675,7 +1669,7 @@
u32 i;
for (i = 0; i < tdb->lockedkeys[0]; i++)
tdb_unlock(tdb, tdb->lockedkeys[i+1], F_WRLCK);
- free(tdb->lockedkeys);
+ SAFE_FREE(tdb->lockedkeys);
tdb->lockedkeys = NULL;
}
diff -r -u --exclude-from=diffex source/tdb/tdbutil.c new/tdb/tdbutil.c
--- source/tdb/tdbutil.c Wed Dec 5 16:45:36 2001
+++ new/tdb/tdbutil.c Sat Dec 22 09:55:26 2001
@@ -68,7 +68,7 @@
return -1;
memcpy(&ret, data.dptr, sizeof(int));
- free(data.dptr);
+ SAFE_FREE(data.dptr);
return ret;
}
@@ -374,7 +374,7 @@
return;
DEBUG(level, ("tdb(%s): %s", tdb->name, ptr));
- free(ptr);
+ SAFE_FREE(ptr);
}
/****************************************************************************
--------------------------------------------------------
Dr. Andreas Moroder
Sanitätsbetrieb Brixen - Azienda Sanitaria di Bressanone
More information about the samba-technical
mailing list