r4088: Get medieval on our ass about malloc.... :-). Take control of all our allocation
authorJeremy Allison <jra@samba.org>
Tue, 7 Dec 2004 18:25:53 +0000 (18:25 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:53:32 +0000 (10:53 -0500)
functions so we can funnel through some well known functions. Should help greatly with
malloc checking.
HEAD patch to follow.
Jeremy.

218 files changed:
source/auth/auth.c
source/auth/auth_ntlmssp.c
source/auth/auth_util.c
source/client/client.c
source/client/clitar.c
source/groupdb/mapping.c
source/include/smb.h
source/include/smb_macros.h
source/intl/lang_tdb.c
source/lib/access.c
source/lib/account_pol.c
source/lib/adt_tree.c
source/lib/bitmap.c
source/lib/charcnv.c
source/lib/data_blob.c
source/lib/debug.c
source/lib/dprintf.c
source/lib/gencache.c
source/lib/iconv.c
source/lib/interface.c
source/lib/ldap_escape.c
source/lib/messages.c
source/lib/module.c
source/lib/ms_fnmatch.c
source/lib/privileges.c
source/lib/secace.c
source/lib/secacl.c
source/lib/secdesc.c
source/lib/server_mutex.c
source/lib/smbldap.c
source/lib/substitute.c
source/lib/system.c
source/lib/system_smbd.c
source/lib/talloc.c
source/lib/time.c
source/lib/util.c
source/lib/util_file.c
source/lib/util_getent.c
source/lib/util_pw.c
source/lib/util_sid.c
source/lib/util_sock.c
source/lib/util_str.c
source/lib/util_unistr.c
source/lib/wins_srv.c
source/lib/xfile.c
source/libads/ads_struct.c
source/libads/authdata.c
source/libads/kerberos_keytab.c
source/libads/kerberos_verify.c
source/libads/krb5_setpw.c
source/libads/ldap.c
source/libads/ldap_printer.c
source/libads/ldap_utils.c
source/libads/sasl.c
source/libsmb/asn1.c
source/libsmb/clientgen.c
source/libsmb/clifile.c
source/libsmb/clilist.c
source/libsmb/cliquota.c
source/libsmb/clireadwrite.c
source/libsmb/clitrans.c
source/libsmb/conncache.c
source/libsmb/libsmb_cache.c
source/libsmb/libsmb_compat.c
source/libsmb/libsmbclient.c
source/libsmb/namequery.c
source/libsmb/nmblib.c
source/libsmb/ntlmssp.c
source/libsmb/samlogon_cache.c
source/libsmb/smb_signing.c
source/libsmb/spnego.c
source/locking/brlock.c
source/locking/locking.c
source/locking/posix.c
source/modules/vfs_netatalk.c
source/modules/vfs_recycle.c
source/modules/vfs_shadow_copy.c
source/nmbd/nmbd_become_lmb.c
source/nmbd/nmbd_browserdb.c
source/nmbd/nmbd_browsesync.c
source/nmbd/nmbd_incomingrequests.c
source/nmbd/nmbd_namelistdb.c
source/nmbd/nmbd_nameregister.c
source/nmbd/nmbd_packets.c
source/nmbd/nmbd_processlogon.c
source/nmbd/nmbd_responserecordsdb.c
source/nmbd/nmbd_serverlistdb.c
source/nmbd/nmbd_subnetdb.c
source/nmbd/nmbd_synclists.c
source/nmbd/nmbd_winsproxy.c
source/nmbd/nmbd_winsserver.c
source/nmbd/nmbd_workgroupdb.c
source/nsswitch/wb_client.c
source/nsswitch/winbindd.c
source/nsswitch/winbindd_acct.c
source/nsswitch/winbindd_ads.c
source/nsswitch/winbindd_cache.c
source/nsswitch/winbindd_cm.c
source/nsswitch/winbindd_dual.c
source/nsswitch/winbindd_group.c
source/nsswitch/winbindd_misc.c
source/nsswitch/winbindd_pam.c
source/nsswitch/winbindd_passdb.c
source/nsswitch/winbindd_rpc.c
source/nsswitch/winbindd_user.c
source/nsswitch/winbindd_util.c
source/nsswitch/winbindd_wins.c
source/nsswitch/wins.c
source/param/loadparm.c
source/param/params.c
source/passdb/login_cache.c
source/passdb/lookup_sid.c
source/passdb/machine_sid.c
source/passdb/passdb.c
source/passdb/pdb_get_set.c
source/passdb/pdb_interface.c
source/passdb/pdb_ldap.c
source/passdb/pdb_smbpasswd.c
source/passdb/pdb_sql.c
source/passdb/pdb_tdb.c
source/passdb/privileges.c
source/passdb/secrets.c
source/passdb/util_sam_sid.c
source/printing/load.c
source/printing/notify.c
source/printing/nt_printing.c
source/printing/print_cups.c
source/printing/print_generic.c
source/printing/printing.c
source/printing/printing_db.c
source/registry/reg_cachehook.c
source/registry/reg_db.c
source/registry/reg_frontend.c
source/registry/reg_objects.c
source/registry/reg_printing.c
source/rpc_client/cli_ds.c
source/rpc_client/cli_echo.c
source/rpc_client/cli_lsarpc.c
source/rpc_client/cli_samr.c
source/rpc_client/cli_spoolss.c
source/rpc_client/cli_srvsvc.c
source/rpc_parse/parse_dfs.c
source/rpc_parse/parse_ds.c
source/rpc_parse/parse_echo.c
source/rpc_parse/parse_lsa.c
source/rpc_parse/parse_misc.c
source/rpc_parse/parse_net.c
source/rpc_parse/parse_prs.c
source/rpc_parse/parse_samr.c
source/rpc_parse/parse_sec.c
source/rpc_parse/parse_spoolss.c
source/rpc_parse/parse_srv.c
source/rpc_server/srv_dfs_nt.c
source/rpc_server/srv_echo_nt.c
source/rpc_server/srv_lsa_ds_nt.c
source/rpc_server/srv_lsa_hnd.c
source/rpc_server/srv_lsa_nt.c
source/rpc_server/srv_netlog_nt.c
source/rpc_server/srv_pipe.c
source/rpc_server/srv_pipe_hnd.c
source/rpc_server/srv_reg_nt.c
source/rpc_server/srv_samr_nt.c
source/rpc_server/srv_spoolss_nt.c
source/rpc_server/srv_srvsvc_nt.c
source/rpc_server/srv_util.c
source/rpc_server/srv_wkssvc_nt.c
source/rpcclient/cmd_echo.c
source/rpcclient/cmd_lsarpc.c
source/rpcclient/cmd_samr.c
source/rpcclient/cmd_spoolss.c
source/rpcclient/rpcclient.c
source/sam/idmap.c
source/sam/idmap_tdb.c
source/smbd/blocking.c
source/smbd/conn.c
source/smbd/dir.c
source/smbd/fake_file.c
source/smbd/fileio.c
source/smbd/files.c
source/smbd/ipc.c
source/smbd/lanman.c
source/smbd/mangle_hash.c
source/smbd/mangle_hash2.c
source/smbd/msdfs.c
source/smbd/notify.c
source/smbd/ntquotas.c
source/smbd/nttrans.c
source/smbd/open.c
source/smbd/oplock.c
source/smbd/password.c
source/smbd/posix_acls.c
source/smbd/process.c
source/smbd/reply.c
source/smbd/sec_ctx.c
source/smbd/session.c
source/smbd/statcache.c
source/smbd/trans2.c
source/smbd/vfs.c
source/tdb/tdb.c
source/tdb/tdbback.c
source/tdb/tdbutil.c
source/utils/net.c
source/utils/net_ads.c
source/utils/net_cache.c
source/utils/net_idmap.c
source/utils/net_rap.c
source/utils/net_rpc.c
source/utils/net_rpc_join.c
source/utils/net_rpc_printer.c
source/utils/net_rpc_samsync.c
source/utils/net_status.c
source/utils/ntlm_auth.c
source/utils/pdbedit.c
source/utils/smbcacls.c
source/utils/smbtree.c
source/web/cgi.c
source/web/neg_lang.c
source/web/statuspage.c

index 7cfe3fc63945a8866ae2b15d42a4e40d22e55f43..b777e97cc9da35ce182f3f7d6053042a5cf69f7a 100644 (file)
@@ -49,7 +49,7 @@ NTSTATUS smb_register_auth(int version, const char *name, auth_init_function ini
                return NT_STATUS_OBJECT_NAME_COLLISION;
        }
        
-       entry = smb_xmalloc(sizeof(struct auth_init_function_entry));
+       entry = SMB_XMALLOC_P(struct auth_init_function_entry);
        entry->name = smb_xstrdup(name);
        entry->init = init;
 
@@ -347,7 +347,7 @@ static NTSTATUS make_auth_context(struct auth_context **auth_context)
 
        mem_ctx = talloc_init("authentication context");
        
-       *auth_context = talloc(mem_ctx, sizeof(**auth_context));
+       *auth_context = TALLOC_P(mem_ctx, struct auth_context);
        if (!*auth_context) {
                DEBUG(0,("make_auth_context: talloc failed!\n"));
                talloc_destroy(mem_ctx);
index 4b425056b11bf1252c0f92ed0b1559b4b7b3cd0b..0e2c359251d66d086c19dda906b782f449e2a185 100644 (file)
@@ -135,7 +135,7 @@ NTSTATUS auth_ntlmssp_start(AUTH_NTLMSSP_STATE **auth_ntlmssp_state)
 
        mem_ctx = talloc_init("AUTH NTLMSSP context");
        
-       *auth_ntlmssp_state = talloc_zero(mem_ctx, sizeof(**auth_ntlmssp_state));
+       *auth_ntlmssp_state = TALLOC_ZERO_P(mem_ctx, AUTH_NTLMSSP_STATE);
        if (!*auth_ntlmssp_state) {
                DEBUG(0,("auth_ntlmssp_start: talloc failed!\n"));
                talloc_destroy(mem_ctx);
index 1ef64ab8458535f3e853a8d3fabca3b3add53930..d985c0a54fcadb4af27427a49d28a8fa4f97c280 100644 (file)
@@ -132,7 +132,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
 
        DEBUG(5,("attempting to make a user_info for %s (%s)\n", internal_username, smb_name));
 
-       *user_info = malloc(sizeof(**user_info));
+       *user_info = SMB_MALLOC_P(auth_usersupplied_info);
        if (!user_info) {
                DEBUG(0,("malloc failed for user_info (size %lu)\n", (unsigned long)sizeof(*user_info)));
                return NT_STATUS_NO_MEMORY;
@@ -142,7 +142,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
 
        DEBUG(5,("making strings for %s's user_info struct\n", internal_username));
 
-       (*user_info)->smb_name.str = strdup(smb_name);
+       (*user_info)->smb_name.str = SMB_STRDUP(smb_name);
        if ((*user_info)->smb_name.str) { 
                (*user_info)->smb_name.len = strlen(smb_name);
        } else {
@@ -150,7 +150,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                return NT_STATUS_NO_MEMORY;
        }
        
-       (*user_info)->internal_username.str = strdup(internal_username);
+       (*user_info)->internal_username.str = SMB_STRDUP(internal_username);
        if ((*user_info)->internal_username.str) { 
                (*user_info)->internal_username.len = strlen(internal_username);
        } else {
@@ -158,7 +158,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                return NT_STATUS_NO_MEMORY;
        }
 
-       (*user_info)->domain.str = strdup(domain);
+       (*user_info)->domain.str = SMB_STRDUP(domain);
        if ((*user_info)->domain.str) { 
                (*user_info)->domain.len = strlen(domain);
        } else {
@@ -166,7 +166,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                return NT_STATUS_NO_MEMORY;
        }
 
-       (*user_info)->client_domain.str = strdup(client_domain);
+       (*user_info)->client_domain.str = SMB_STRDUP(client_domain);
        if ((*user_info)->client_domain.str) { 
                (*user_info)->client_domain.len = strlen(client_domain);
        } else {
@@ -174,7 +174,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                return NT_STATUS_NO_MEMORY;
        }
 
-       (*user_info)->wksta_name.str = strdup(wksta_name);
+       (*user_info)->wksta_name.str = SMB_STRDUP(wksta_name);
        if ((*user_info)->wksta_name.str) { 
                (*user_info)->wksta_name.len = strlen(wksta_name);
        } else {
@@ -523,7 +523,7 @@ static NTSTATUS create_nt_user_token(const DOM_SID *user_sid, const DOM_SID *gro
        int i;
        int sid_ndx;
        
-       if ((ptoken = malloc( sizeof(NT_USER_TOKEN) ) ) == NULL) {
+       if ((ptoken = SMB_MALLOC_P(NT_USER_TOKEN)) == NULL) {
                DEBUG(0, ("create_nt_token: Out of memory allocating token\n"));
                nt_status = NT_STATUS_NO_MEMORY;
                return nt_status;
@@ -533,7 +533,7 @@ static NTSTATUS create_nt_user_token(const DOM_SID *user_sid, const DOM_SID *gro
 
        ptoken->num_sids = n_groupSIDs + 5;
 
-       if ((ptoken->user_sids = (DOM_SID *)malloc( sizeof(DOM_SID) * ptoken->num_sids )) == NULL) {
+       if ((ptoken->user_sids = SMB_MALLOC_ARRAY( DOM_SID, ptoken->num_sids )) == NULL) {
                DEBUG(0, ("create_nt_token: Out of memory allocating SIDs\n"));
                nt_status = NT_STATUS_NO_MEMORY;
                return nt_status;
@@ -610,7 +610,7 @@ NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups,
                return NULL;
        }
 
-       group_sids = malloc(sizeof(DOM_SID) * ngroups);
+       group_sids = SMB_MALLOC_ARRAY(DOM_SID, ngroups);
        if (!group_sids) {
                DEBUG(0, ("create_nt_token: malloc() failed for DOM_SID list!\n"));
                return NULL;
@@ -685,7 +685,7 @@ static NTSTATUS get_user_groups(const char *username, uid_t uid, gid_t gid,
        
        if (n_unix_groups > 0) {
        
-               *groups   = malloc(sizeof(DOM_SID) * n_unix_groups);
+               *groups   = SMB_MALLOC_ARRAY(DOM_SID, n_unix_groups);
                
                if (!*groups) {
                        DEBUG(0, ("get_user_group: malloc() failed for DOM_SID list!\n"));
@@ -715,7 +715,7 @@ static NTSTATUS get_user_groups(const char *username, uid_t uid, gid_t gid,
 
 static NTSTATUS make_server_info(auth_serversupplied_info **server_info)
 {
-       *server_info = malloc(sizeof(**server_info));
+       *server_info = SMB_MALLOC_P(auth_serversupplied_info);
        if (!*server_info) {
                DEBUG(0,("make_server_info: malloc failed!\n"));
                return NT_STATUS_NO_MEMORY;
@@ -1244,7 +1244,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
        
        /* Create a 'combined' list of all SIDs we might want in the SD */
        
-       all_group_SIDs = malloc(sizeof(DOM_SID) * (info3->num_groups2 + info3->num_other_sids + n_lgroupSIDs));
+       all_group_SIDs = SMB_MALLOC_ARRAY(DOM_SID,info3->num_groups2 + info3->num_other_sids + n_lgroupSIDs);
        
        if (!all_group_SIDs) {
                DEBUG(0, ("malloc() failed for DOM_SID list!\n"));
@@ -1393,7 +1393,7 @@ BOOL make_auth_methods(struct auth_context *auth_context, auth_methods **auth_me
                smb_panic("make_auth_methods: pointer to auth_method pointer is NULL!\n");
        }
 
-       *auth_method = talloc(auth_context->mem_ctx, sizeof(**auth_method));
+       *auth_method = TALLOC_P(auth_context->mem_ctx, auth_methods);
        if (!*auth_method) {
                DEBUG(0,("make_auth_method: malloc failed!\n"));
                return False;
@@ -1428,7 +1428,7 @@ NT_USER_TOKEN *dup_nt_token(NT_USER_TOKEN *ptoken)
        if (!ptoken)
                return NULL;
 
-    if ((token = (NT_USER_TOKEN *)malloc( sizeof(NT_USER_TOKEN) ) ) == NULL)
+    if ((token = SMB_MALLOC_P(NT_USER_TOKEN)) == NULL)
         return NULL;
 
     ZERO_STRUCTP(token);
index 8c43f4e16e465f95e2c95575585b2ab67633cade..7470a7ba5fdb38f16ad48d30617fef86d66e9bca 100644 (file)
@@ -387,7 +387,7 @@ static void init_do_list_queue(void)
 {
        reset_do_list_queue();
        do_list_queue_size = 1024;
-       do_list_queue = malloc(do_list_queue_size);
+       do_list_queue = SMB_MALLOC(do_list_queue_size);
        if (do_list_queue == 0) { 
                d_printf("malloc fail for size %d\n",
                         (int)do_list_queue_size);
@@ -425,7 +425,7 @@ static void add_to_do_list_queue(const char* entry)
                do_list_queue_size *= 2;
                DEBUG(4,("enlarging do_list_queue to %d\n",
                         (int)do_list_queue_size));
-               dlq = Realloc(do_list_queue, do_list_queue_size);
+               dlq = SMB_REALLOC(do_list_queue, do_list_queue_size);
                if (! dlq) {
                        d_printf("failure enlarging do_list_queue to %d bytes\n",
                                 (int)do_list_queue_size);
@@ -704,7 +704,7 @@ static int do_get(char *rname, char *lname, BOOL reget)
        DEBUG(1,("getting file %s of size %.0f as %s ", 
                 rname, (double)size, lname));
 
-       if(!(data = (char *)malloc(read_size))) { 
+       if(!(data = (char *)SMB_MALLOC(read_size))) { 
                d_printf("malloc fail for size %d\n", read_size);
                cli_close(cli, fnum);
                return 1;
@@ -1112,7 +1112,7 @@ static int do_put(char *rname, char *lname, BOOL reput)
        DEBUG(1,("putting file %s as %s ",lname,
                 rname));
   
-       buf = (char *)malloc(maxwrite);
+       buf = (char *)SMB_MALLOC(maxwrite);
        if (!buf) {
                d_printf("ERROR: Not enough memory!\n");
                return 1;
@@ -1325,7 +1325,7 @@ static int file_find(struct file_list **list, const char *directory,
                                        return -1;
                                }
                        }
-                       entry = (struct file_list *) malloc(sizeof (struct file_list));
+                       entry = SMB_MALLOC_P(struct file_list);
                        if (!entry) {
                                d_printf("Out of memory in file_find\n");
                                closedir(dir);
@@ -2698,7 +2698,7 @@ static void completion_remote_filter(file_info *f, const char *mask, void *state
 
        if ((info->count < MAX_COMPLETIONS - 1) && (strncmp(info->text, f->name, info->len) == 0) && (strcmp(f->name, ".") != 0) && (strcmp(f->name, "..") != 0)) {
                if ((info->dirmask[0] == 0) && !(f->mode & aDIR))
-                       info->matches[info->count] = strdup(f->name);
+                       info->matches[info->count] = SMB_STRDUP(f->name);
                else {
                        pstring tmp;
 
@@ -2709,7 +2709,7 @@ static void completion_remote_filter(file_info *f, const char *mask, void *state
                        pstrcat(tmp, f->name);
                        if (f->mode & aDIR)
                                pstrcat(tmp, "/");
-                       info->matches[info->count] = strdup(tmp);
+                       info->matches[info->count] = SMB_STRDUP(tmp);
                }
                if (info->matches[info->count] == NULL)
                        return;
@@ -2740,7 +2740,7 @@ static char **remote_completion(const char *text, int len)
        if (len >= PATH_MAX)
                return(NULL);
 
-       info.matches = (char **)malloc(sizeof(info.matches[0])*MAX_COMPLETIONS);
+       info.matches = SMB_MALLOC_ARRAY(char *,MAX_COMPLETIONS);
        if (!info.matches) return NULL;
        info.matches[0] = NULL;
 
@@ -2761,9 +2761,9 @@ static char **remote_completion(const char *text, int len)
                goto cleanup;
 
        if (info.count == 2)
-               info.matches[0] = strdup(info.matches[1]);
+               info.matches[0] = SMB_STRDUP(info.matches[1]);
        else {
-               info.matches[0] = malloc(info.samelen+1);
+               info.matches[0] = SMB_MALLOC(info.samelen+1);
                if (!info.matches[0])
                        goto cleanup;
                strncpy(info.matches[0], info.matches[1], info.samelen);
@@ -2818,7 +2818,7 @@ static char **completion_fn(const char *text, int start, int end)
                char **matches;
                int i, len, samelen = 0, count=1;
 
-               matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+               matches = SMB_MALLOC_ARRAY(char *, MAX_COMPLETIONS);
                if (!matches) {
                        return NULL;
                }
@@ -2827,7 +2827,7 @@ static char **completion_fn(const char *text, int start, int end)
                len = strlen(text);
                for (i=0;commands[i].fn && count < MAX_COMPLETIONS-1;i++) {
                        if (strncmp(text, commands[i].name, len) == 0) {
-                               matches[count] = strdup(commands[i].name);
+                               matches[count] = SMB_STRDUP(commands[i].name);
                                if (!matches[count])
                                        goto cleanup;
                                if (count == 1)
@@ -2844,10 +2844,10 @@ static char **completion_fn(const char *text, int start, int end)
                case 1:
                        goto cleanup;
                case 2:
-                       matches[0] = strdup(matches[1]);
+                       matches[0] = SMB_STRDUP(matches[1]);
                        break;
                default:
-                       matches[0] = malloc(samelen+1);
+                       matches[0] = SMB_MALLOC(samelen+1);
                        if (!matches[0])
                                goto cleanup;
                        strncpy(matches[0], matches[1], samelen);
index b4d6273f7bb695c8dd12c6e50aa78ea7202abff1..a92be1abe385e91a448bd03510af62c610a10643 100644 (file)
@@ -146,7 +146,7 @@ static char *string_create_s(int size)
 {
        char *tmp;
 
-       tmp = (char *)malloc(size+1);
+       tmp = (char *)SMB_MALLOC(size+1);
 
        if (tmp == NULL) {
                DEBUG(0, ("Out of memory in string_create_s\n"));
@@ -177,7 +177,7 @@ static void writetarheader(int f, const char *aname, SMB_BIG_UINT size, time_t m
        if (l+2 >= NAMSIZ) {
                /* write a GNU tar style long header */
                char *b;
-               b = (char *)malloc(l+TBLOCK+100);
+               b = (char *)SMB_MALLOC(l+TBLOCK+100);
                if (!b) {
                        DEBUG(0,("out of memory\n"));
                        exit(1);
@@ -385,7 +385,7 @@ static void initarbuf(void)
 {
        /* initialize tar buffer */
        tbufsiz=blocksize*TBLOCK;
-       tarbuf=malloc(tbufsiz);      /* FIXME: We might not get the buffer */
+       tarbuf=SMB_MALLOC(tbufsiz);      /* FIXME: We might not get the buffer */
 
        /* reset tar buffer pointer and tar file counter and total dumped */
        tp=0; ntarf=0; ttarf=0;
@@ -1059,7 +1059,7 @@ static char *get_longfilename(file_info2 finfo)
        /* finfo.size here is the length of the filename as written by the "/./@LongLink" name
         * header call. */
        int namesize = finfo.size + strlen(cur_dir) + 2;
-       char *longname = malloc(namesize);
+       char *longname = SMB_MALLOC(namesize);
        int offset = 0, left = finfo.size;
        BOOL first = True;
 
@@ -1506,7 +1506,7 @@ static int read_inclusion_file(char *filename)
        while ((! error) && (x_fgets(buf, sizeof(buf)-1, inclusion))) {
                if (inclusion_buffer == NULL) {
                        inclusion_buffer_size = 1024;
-                       if ((inclusion_buffer = malloc(inclusion_buffer_size)) == NULL) {
+                       if ((inclusion_buffer = SMB_MALLOC(inclusion_buffer_size)) == NULL) {
                                DEBUG(0,("failure allocating buffer to read inclusion file\n"));
                                error = 1;
                                break;
@@ -1520,7 +1520,7 @@ static int read_inclusion_file(char *filename)
                if ((strlen(buf) + 1 + inclusion_buffer_sofar) >= inclusion_buffer_size) {
                        char *ib;
                        inclusion_buffer_size *= 2;
-                       ib = Realloc(inclusion_buffer,inclusion_buffer_size);
+                       ib = SMB_REALLOC(inclusion_buffer,inclusion_buffer_size);
                        if (! ib) {
                                DEBUG(0,("failure enlarging inclusion buffer to %d bytes\n",
                                                inclusion_buffer_size));
@@ -1539,7 +1539,7 @@ static int read_inclusion_file(char *filename)
 
        if (! error) {
                /* Allocate an array of clipn + 1 char*'s for cliplist */
-               cliplist = malloc((clipn + 1) * sizeof(char *));
+               cliplist = SMB_MALLOC_ARRAY(char *, clipn + 1);
                if (cliplist == NULL) {
                        DEBUG(0,("failure allocating memory for cliplist\n"));
                        error = 1;
@@ -1550,7 +1550,7 @@ static int read_inclusion_file(char *filename)
                                /* set current item to NULL so array will be null-terminated even if
                                                * malloc fails below. */
                                cliplist[i] = NULL;
-                               if ((tmpstr = (char *)malloc(strlen(p)+1)) == NULL) {
+                               if ((tmpstr = (char *)SMB_MALLOC(strlen(p)+1)) == NULL) {
                                        DEBUG(0, ("Could not allocate space for a cliplist item, # %i\n", i));
                                        error = 1;
                                } else {
@@ -1720,7 +1720,7 @@ int tar_parseargs(int argc, char *argv[], const char *Optarg, int Optind)
                clipn=argc-Optind-1;
                clipcount = clipn;
 
-               if ((tmplist=malloc(clipn*sizeof(char *))) == NULL) {
+               if ((tmplist=SMB_MALLOC_ARRAY(char *,clipn)) == NULL) {
                        DEBUG(0, ("Could not allocate space to process cliplist, count = %i\n", clipn));
                        return 0;
                }
@@ -1729,7 +1729,7 @@ int tar_parseargs(int argc, char *argv[], const char *Optarg, int Optind)
 
                        DEBUG(5, ("Processing an item, %s\n", cliplist[clipcount]));
 
-                       if ((tmpstr = (char *)malloc(strlen(cliplist[clipcount])+1)) == NULL) {
+                       if ((tmpstr = (char *)SMB_MALLOC(strlen(cliplist[clipcount])+1)) == NULL) {
                                DEBUG(0, ("Could not allocate space for a cliplist item, # %i\n", clipcount));
                                return 0;
                        }
@@ -1751,7 +1751,7 @@ int tar_parseargs(int argc, char *argv[], const char *Optarg, int Optind)
 #ifdef HAVE_REGEX_H
                int errcode;
 
-               if ((preg = (regex_t *)malloc(65536)) == NULL) {
+               if ((preg = (regex_t *)SMB_MALLOC(65536)) == NULL) {
 
                        DEBUG(0, ("Could not allocate buffer for regular expression search\n"));
                        return;
index 072304ed18baa3409211cf7e8b90ffc1de60d221..7095997dc8d4aeae40596be55fc655df4f2a788c 100644 (file)
@@ -469,7 +469,7 @@ static BOOL enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **rmap,
                decode_sid_name_use(group_type, map.sid_name_use);
                DEBUG(11,("enum_group_mapping: returning group %s of type %s\n", map.nt_name ,group_type));
 
-               mapt=(GROUP_MAP *)Realloc((*rmap), (entries+1)*sizeof(GROUP_MAP));
+               mapt= SMB_REALLOC_ARRAY((*rmap), GROUP_MAP, entries+1);
                if (!mapt) {
                        DEBUG(0,("enum_group_mapping: Unable to enlarge group map!\n"));
                        SAFE_FREE(*rmap);
@@ -613,7 +613,7 @@ static NTSTATUS add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
                asprintf(&new_memberstring, "%s %s", (char *)(dbuf.dptr),
                         string_sid);
        } else {
-               new_memberstring = strdup(string_sid);
+               new_memberstring = SMB_STRDUP(string_sid);
        }
 
        if (new_memberstring == NULL)
@@ -753,7 +753,7 @@ static NTSTATUS del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
                return tdb_delete(tdb, kbuf) == 0 ?
                        NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
 
-       member_string = strdup("");
+       member_string = SMB_STRDUP("");
 
        if (member_string == NULL) {
                SAFE_FREE(sids);
@@ -1292,7 +1292,7 @@ NTSTATUS pdb_default_enum_aliases(struct pdb_methods *methods,
        if (*num_aliases > max_entries)
                *num_aliases = max_entries;
 
-       *info = malloc(sizeof(struct acct_info) * (*num_aliases));
+       *info = SMB_MALLOC_ARRAY(struct acct_info, *num_aliases);
 
        for (i=0; i<*num_aliases; i++) {
                fstrcpy((*info)[i].acct_name, map[i+start_idx].nt_name);
index bc99a2a6fddf7aa0fd1511c8a2e87ea58b9f2768..49d3d29ac03ad827a9e9dcb66555a49c950a8110 100644 (file)
@@ -53,9 +53,6 @@ typedef int BOOL;
 #define _BOOL       /* So we don't typedef BOOL again in vfs.h */
 #endif
 
-/* limiting size of ipc replies */
-#define REALLOC(ptr,size) Realloc(ptr,MAX((size),4*1024))
-
 #define SIZEOFWORD 2
 
 #ifndef DEF_CREATE_MASK
@@ -1656,7 +1653,7 @@ struct unix_error_map {
 #define SAFE_NETBIOS_CHARS ". -_"
 
 /* generic iconv conversion structure */
-typedef struct {
+typedef struct _smb_iconv_t {
        size_t (*direct)(void *cd, const char **inbuf, size_t *inbytesleft,
                         char **outbuf, size_t *outbytesleft);
        size_t (*pull)(void *cd, const char **inbuf, size_t *inbytesleft,
index a9e911c066ac2ced4d836a4051815271754c2d17..4fa9ffa5ace418c34caf98052185326ed1916333 100644 (file)
@@ -261,4 +261,92 @@ copy an IP address from one buffer to another
 
 #define IS_DC  (lp_server_role()==ROLE_DOMAIN_PDC || lp_server_role()==ROLE_DOMAIN_BDC) 
 
+/*****************************************************************************
+ Safe allocation macros.
+*****************************************************************************/
+
+#define SMB_MALLOC_ARRAY(type,count) (type *)malloc_array(sizeof(type),(count))
+#define SMB_REALLOC(p,s) Realloc((p),(s))
+#define SMB_REALLOC_ARRAY(p,type,count) (type *)realloc_array((p),sizeof(type),(count))
+#define SMB_CALLOC_ARRAY(type,count) (type *)calloc_array(sizeof(type),(count))
+#define SMB_XMALLOC_P(type) (type *)smb_xmalloc_array(sizeof(type),1)
+#define SMB_XMALLOC_ARRAY(type,count) (type *)smb_xmalloc_array(sizeof(type),(count))
+
+/* limiting size of ipc replies */
+#define SMB_REALLOC_LIMIT(ptr,size) SMB_REALLOC(ptr,MAX((size),4*1024))
+
+/* #define PARANOID_MALLOC_CHECKER 1 */
+
+#if defined(PARANOID_MALLOC_CHECKER)
+
+#define TALLOC(ctx, size) talloc_((ctx),(size))
+#define TALLOC_P(ctx, type) (type *)talloc_((ctx),sizeof(type))
+#define TALLOC_ARRAY(ctx, type, count) (type *)talloc_array_((ctx),sizeof(type),(count))
+#define TALLOC_MEMDUP(ctx, ptr, size) talloc_memdup_((ctx),(ptr),(size))
+#define TALLOC_ZERO(ctx, size) talloc_zero_((ctx),(size))
+#define TALLOC_ZERO_P(ctx, type) (type *)talloc_zero_((ctx),sizeof(type))
+#define TALLOC_ZERO_ARRAY(ctx, type, count) (type *)talloc_zero_array_((ctx),sizeof(type),(count))
+#define TALLOC_REALLOC(ctx, ptr, count) talloc_realloc_((ctx),(ptr),(count))
+#define TALLOC_REALLOC_ARRAY(ctx, ptr, type, count) (type *)talloc_realloc_array_((ctx),(ptr),sizeof(type),(count))
+
+#define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem_((ps),sizeof(type),(count))
+
+/* Get medieval on our ass about malloc.... */
+
+/* Restrictions on malloc/realloc/calloc. */
+#ifdef malloc
+#undef malloc
+#endif
+#define malloc(s) __ERROR_DONT_USE_MALLOC_DIRECTLY
+
+#ifdef realloc
+#undef realloc
+#endif
+#define realloc(p,s) __ERROR_DONT_USE_REALLOC_DIRECTLY
+
+#ifdef calloc
+#undef calloc
+#endif
+#define calloc(n,s) __ERROR_DONT_USE_CALLOC_DIRECTLY
+
+#ifdef strndup
+#undef strndup
+#endif
+#define strndup(s,n) __ERROR_DONT_USE_STRNDUP_DIRECTLY
+
+#ifdef strdup
+#undef strdup
+#endif
+#define strdup(s) __ERROR_DONT_USE_STRDUP_DIRECTLY
+
+#define SMB_MALLOC(s) malloc_(s)
+#define SMB_MALLOC_P(type) (type *)malloc_(sizeof(type))
+
+#define SMB_STRDUP(s) smb_xstrdup(s)
+#define SMB_STRNDUP(s,n) smb_xstrndup(s,n)
+
+#else
+
+#define TALLOC(ctx, size) talloc((ctx),(size))
+#define TALLOC_P(ctx, type) (type *)talloc((ctx),sizeof(type))
+#define TALLOC_ARRAY(ctx, type, count) (type *)talloc_array((ctx),sizeof(type),(count))
+#define TALLOC_MEMDUP(ctx, ptr, size) talloc_memdup((ctx),(ptr),(size))
+#define TALLOC_ZERO(ctx, size) talloc_zero((ctx),(size))
+#define TALLOC_ZERO_P(ctx, type) (type *)talloc_zero((ctx),sizeof(type))
+#define TALLOC_ZERO_ARRAY(ctx, type, count) (type *)talloc_zero_array((ctx),sizeof(type),(count))
+#define TALLOC_REALLOC(ctx, ptr, count) talloc_realloc((ctx),(ptr),(count))
+#define TALLOC_REALLOC_ARRAY(ctx, ptr, type, count) (type *)talloc_realloc_array((ctx),(ptr),sizeof(type),(count))
+
+#define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem((ps),sizeof(type),(count))
+
+/* Regular malloc code. */
+
+#define SMB_MALLOC(s) malloc(s)
+#define SMB_MALLOC_P(type) (type *)malloc(sizeof(type))
+
+#define SMB_STRDUP(s) strdup(s)
+#define SMB_STRNDUP(s,n) strndup(s,n)
+
+#endif
+
 #endif /* _SMB_MACROS_H */
index fe2ad5b2fce48ab811600c2f282f6efd7f127607..d3422f0d78ac03d599ac2fc2898455ca083bf1be 100644 (file)
@@ -148,7 +148,7 @@ BOOL lang_tdb_init(const char *lang)
                                   strerror(errno)));
                        goto done;
                }
-               current_lang = strdup(lang);
+               current_lang = SMB_STRDUP(lang);
                result = True;
                goto done;
        }
@@ -160,7 +160,7 @@ BOOL lang_tdb_init(const char *lang)
                tdb_store_int32(tdb, "/LOADTIME/", (int)time(NULL));
        }
 
-       current_lang = strdup(lang);
+       current_lang = SMB_STRDUP(lang);
        result = True;
 
  done:
@@ -194,7 +194,7 @@ const char *lang_msg(const char *msgid)
                        count++;
        }
 
-       if (!(msgid_quoted = malloc(strlen(msgid) + count + 1)))
+       if (!(msgid_quoted = SMB_MALLOC(strlen(msgid) + count + 1)))
                return msgid;
 
        /* string_sub() is unsuitable here as it replaces some punctuation
@@ -221,7 +221,7 @@ const char *lang_msg(const char *msgid)
        /* if the message isn't found then we still need to return a pointer
           that can be freed. Pity. */
        if (!data.dptr)
-               return strdup(msgid);
+               return SMB_STRDUP(msgid);
 
        return (const char *)data.dptr;
 }
index f03f5daf333b3cf908333f0daf43274cb49f7b95..fcc795d1f266c15f80f3160990b4595a00a1f9e9 100644 (file)
@@ -86,7 +86,7 @@ static BOOL string_match(const char *tok,const char *s, char *invalid_char)
                        DEBUG(0,("Unable to get default yp domain.\n"));
                        return False;
                }
-               if (!(hostname = strdup(s))) {
+               if (!(hostname = SMB_STRDUP(s))) {
                        DEBUG(1,("out of memory for strdup!\n"));
                        return False;
                }
index 9120452e2e0c7c8cc2bb9202a9f136a9dfe2e83f..aa59383258490222d7f5488cdab3ba8903750dad 100644 (file)
@@ -88,7 +88,7 @@ char *account_policy_names_list(void)
                len += strlen(account_policy_names[i].string) + 1;
        }
        len++;
-       nl = malloc(len);
+       nl = SMB_MALLOC(len);
        if (!nl) {
                return NULL;
        }
index bd857e205ac150dfcc944e569b7991b3cd676ade..a5d6380377eee3a8aad2c45782c2fe9779be9010 100644 (file)
@@ -59,7 +59,7 @@ SORTED_TREE* sorted_tree_init( void *data_p,
 {
        SORTED_TREE *tree = NULL;
        
-       if ( !(tree = (SORTED_TREE*)malloc( sizeof(SORTED_TREE) )) )
+       if ( !(tree = SMB_MALLOC_P(SORTED_TREE)) )
                return NULL;
                
        ZERO_STRUCTP( tree );
@@ -67,7 +67,7 @@ SORTED_TREE* sorted_tree_init( void *data_p,
        tree->compare = cmp_fn;
        tree->free_func    = free_fn;
        
-       if ( !(tree->root = (TREE_NODE*)malloc( sizeof(TREE_NODE) )) ) {
+       if ( !(tree->root = SMB_MALLOC_P(TREE_NODE)) ) {
                SAFE_FREE( tree );
                return NULL;
        }
@@ -126,15 +126,15 @@ static TREE_NODE* sorted_tree_birth_child( TREE_NODE *node, char* key )
        TREE_NODE **siblings;
        int i;
        
-       if ( !(infant = (TREE_NODE*)malloc( sizeof(TREE_NODE) )) )
+       if ( !(infant = SMB_MALLOC_P(TREE_NODE)) )
                return NULL;
        
        ZERO_STRUCTP( infant );
                
-       infant->key = strdup( key );
+       infant->key = SMB_STRDUP( key );
        infant->parent = node;
        
-       siblings = Realloc( node->children, sizeof(TREE_NODE*)*(node->num_children+1) );
+       siblings = SMB_REALLOC_ARRAY( node->children, TREE_NODE *, node->num_children+1 );
        
        if ( siblings )
                node->children = siblings;
@@ -260,7 +260,7 @@ BOOL sorted_tree_add( SORTED_TREE *tree, const char *path, void *data_p )
        /* move past the first '/' */
        
        path++; 
-       path2 = strdup( path );
+       path2 = SMB_STRDUP( path );
        if ( !path2 ) {
                DEBUG(0,("sorted_tree_add: strdup() failed on string [%s]!?!?!\n", path));
                return False;
@@ -405,9 +405,9 @@ void* sorted_tree_find( SORTED_TREE *tree, char *key )
        /* make a copy to play with */
        
        if ( *key == '/' )
-               keystr = strdup( key+1 );
+               keystr = SMB_STRDUP( key+1 );
        else
-               keystr = strdup( key );
+               keystr = SMB_STRDUP( key );
        
        if ( !keystr ) {
                DEBUG(0,("sorted_tree_find: strdup() failed on string [%s]!?!?!\n", key));
index 3fa20cdd112c8429f39b253f6e953ec821001f8c..a6b52efe096946c1bbef71769710f317504f6a56 100644 (file)
@@ -30,12 +30,12 @@ struct bitmap *bitmap_allocate(int n)
 {
        struct bitmap *bm;
 
-       bm = (struct bitmap *)malloc(sizeof(*bm));
+       bm = SMB_MALLOC_P(struct bitmap);
 
        if (!bm) return NULL;
        
        bm->n = n;
-       bm->b = (uint32 *)malloc(sizeof(bm->b[0])*(n+31)/32);
+       bm->b = SMB_MALLOC_ARRAY(uint32, (n+31)/32);
        if (!bm->b) {
                SAFE_FREE(bm);
                return NULL;
@@ -68,12 +68,12 @@ struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n)
 
        if (!mem_ctx) return NULL;
 
-       bm = (struct bitmap *)talloc(mem_ctx, sizeof(*bm));
+       bm = TALLOC_P(mem_ctx, struct bitmap);
 
        if (!bm) return NULL;
        
        bm->n = n;
-       bm->b = (uint32 *)talloc(mem_ctx, sizeof(bm->b[0])*(n+31)/32);
+       bm->b = TALLOC_ARRAY(mem_ctx, uint32, (n+31)/32);
        if (!bm->b) {
                return NULL;
        }
index 95e24609cdf9648c7083c23012a1f9781fa7427f..e8ceaf39b7859df8aad3e6896fc6af2559937498 100644 (file)
@@ -538,9 +538,9 @@ size_t convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
        }
 
        if (ctx)
-               ob = (char *)talloc_realloc(ctx, ob, destlen);
+               ob = (char *)TALLOC_REALLOC(ctx, ob, destlen);
        else
-               ob = (char *)Realloc(ob, destlen);
+               ob = (char *)SMB_REALLOC(ob, destlen);
 
        if (!ob) {
                DEBUG(0, ("convert_string_allocate: realloc failed!\n"));
@@ -588,9 +588,9 @@ size_t convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
 
        destlen = destlen - o_len;
        if (ctx)
-               *dest = (char *)talloc_realloc(ctx,ob,destlen);
+               *dest = (char *)TALLOC_REALLOC(ctx,ob,destlen);
        else
-               *dest = (char *)Realloc(ob,destlen);
+               *dest = (char *)SMB_REALLOC(ob,destlen);
        if (destlen && !*dest) {
                DEBUG(0, ("convert_string_allocate: out of memory!\n"));
                if (!ctx)
@@ -763,7 +763,7 @@ char *strdup_upper(const char *s)
                }
        }
 
-       return strdup(out_buffer);
+       return SMB_STRDUP(out_buffer);
 }
 
 size_t unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen)
index 83afc591a1544f589a08bfc335d579990e94ed28..a1c3af2d492e8e47a2c6ea96801f0e3e52c103e8 100644 (file)
@@ -47,7 +47,7 @@ DATA_BLOB data_blob(const void *p, size_t length)
        if (p) {
                ret.data = smb_xmemdup(p, length);
        } else {
-               ret.data = smb_xmalloc(length);
+               ret.data = SMB_XMALLOC_ARRAY(char, length);
        }
        ret.length = length;
        ret.free = free_data_blob;
@@ -67,11 +67,11 @@ DATA_BLOB data_blob_talloc(TALLOC_CTX *mem_ctx, const void *p, size_t length)
        }
 
        if (p) {
-               ret.data = talloc_memdup(mem_ctx, p, length);
+               ret.data = TALLOC_MEMDUP(mem_ctx, p, length);
                if (ret.data == NULL)
                        smb_panic("data_blob_talloc: talloc_memdup failed.\n");
        } else {
-               ret.data = talloc(mem_ctx, length);
+               ret.data = TALLOC(mem_ctx, length);
                if (ret.data == NULL)
                        smb_panic("data_blob_talloc: talloc failed.\n");
        }
index 01aedb47740ec5fa1987ecb6a31a7fbe6aff5d02..b69a35ecd5c829f93cd8646f5f732604d7185e2c 100644 (file)
@@ -192,7 +192,7 @@ static char *debug_list_class_names_and_levels(void)
        if (DEBUGLEVEL_CLASS == &debug_all_class_hack)
                return NULL;
 
-       list = calloc(debug_num_classes + 1, sizeof(char *));
+       list = SMB_CALLOC_ARRAY(char *, debug_num_classes + 1);
        if (!list)
                return NULL;
 
@@ -210,7 +210,7 @@ static char *debug_list_class_names_and_levels(void)
        }
 
        /* create single string list - add space for newline */
-       b = buf = malloc(dim+1);
+       b = buf = SMB_MALLOC(dim+1);
        if (!buf) {
                err = True;
                goto done;
@@ -292,7 +292,7 @@ int debug_add_class(const char *classname)
                /* Initial loading... */
                new_ptr = NULL;
        }
-       new_ptr = Realloc(new_ptr, sizeof(int) * (debug_num_classes + 1));
+       new_ptr = SMB_REALLOC_ARRAY(new_ptr, int, debug_num_classes + 1);
        if (!new_ptr)
                return -1;
        DEBUGLEVEL_CLASS = new_ptr;
@@ -309,19 +309,18 @@ int debug_add_class(const char *classname)
        if (new_ptr == &debug_all_class_isset_hack) {
                new_ptr = NULL;
        }
-       new_ptr = Realloc(new_ptr, sizeof(BOOL) * (debug_num_classes + 1));
+       new_ptr = SMB_REALLOC_ARRAY(new_ptr, BOOL, debug_num_classes + 1);
        if (!new_ptr)
                return -1;
        DEBUGLEVEL_CLASS_ISSET = new_ptr;
        DEBUGLEVEL_CLASS_ISSET[ndx] = False;
 
-       new_ptr = Realloc(classname_table,
-                         sizeof(char *) * (debug_num_classes + 1));
+       new_ptr = SMB_REALLOC_ARRAY(classname_table, char *, debug_num_classes + 1);
        if (!new_ptr)
                return -1;
        classname_table = new_ptr;
 
-       classname_table[ndx] = strdup(classname);
+       classname_table[ndx] = SMB_STRDUP(classname);
        if (! classname_table[ndx])
                return -1;
        
index c62a1f41d10c8da71786b0fd1858984f62214a07..8ed2fa5d8cdaf505019de9e517d2ce9fb464071f 100644 (file)
@@ -54,7 +54,7 @@
           charset, but beware of it growing */
        maxlen = ret*2;
 again:
-       p2 = malloc(maxlen);
+       p2 = SMB_MALLOC(maxlen);
        if (!p2) {
                SAFE_FREE(p);
                return -1;
index 39e727c24fab0f9ff66184c2dff2dfd84ff28846..f2e267c9d4497d576881215d4b010f2879f4c100 100644 (file)
@@ -117,9 +117,9 @@ BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
        if (!valstr)
                return False;
 
-       keybuf.dptr = strdup(keystr);
+       keybuf.dptr = SMB_STRDUP(keystr);
        keybuf.dsize = strlen(keystr)+1;
-       databuf.dptr = strdup(valstr);
+       databuf.dptr = SMB_STRDUP(valstr);
        databuf.dsize = strlen(valstr)+1;
        DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
                   " %s (%d seconds %s)\n", keybuf.dptr, value,ctime(&timeout),
@@ -170,9 +170,9 @@ BOOL gencache_set_only(const char *keystr, const char *valstr, time_t timeout)
                   = %s\n", keystr, old_valstr, ctime(&old_timeout)));
 
        asprintf(&datastr, CACHE_DATA_FMT, (int)timeout, valstr);
-       keybuf.dptr = strdup(keystr);
+       keybuf.dptr = SMB_STRDUP(keystr);
        keybuf.dsize = strlen(keystr)+1;
-       databuf.dptr = strdup(datastr);
+       databuf.dptr = SMB_STRDUP(datastr);
        databuf.dsize = strlen(datastr)+1;
        DEBUGADD(10, ("New value = %s, new timeout = %s (%d seconds %s)", valstr,
                      ctime(&timeout), (int)(timeout - time(NULL)),
@@ -209,7 +209,7 @@ BOOL gencache_del(const char *keystr)
 
        if (!gencache_init()) return False;     
        
-       keybuf.dptr = strdup(keystr);
+       keybuf.dptr = SMB_STRDUP(keystr);
        keybuf.dsize = strlen(keystr)+1;
        DEBUG(10, ("Deleting cache entry (key = %s)\n", keystr));
        ret = tdb_delete(cache, keybuf);
@@ -242,18 +242,17 @@ BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
        if (!gencache_init())
                return False;
        
-       keybuf.dptr = strdup(keystr);
+       keybuf.dptr = SMB_STRDUP(keystr);
        keybuf.dsize = strlen(keystr)+1;
        databuf = tdb_fetch(cache, keybuf);
        SAFE_FREE(keybuf.dptr);
        
        if (databuf.dptr && databuf.dsize > TIMEOUT_LEN) {
-               char* entry_buf = strndup(databuf.dptr, databuf.dsize);
+               char* entry_buf = SMB_STRNDUP(databuf.dptr, databuf.dsize);
                char *v;
                time_t t;
 
-               v = (char*)malloc(sizeof(char) * 
-                                 (databuf.dsize - TIMEOUT_LEN));
+               v = SMB_MALLOC(databuf.dsize - TIMEOUT_LEN);
                                
                SAFE_FREE(databuf.dptr);
                sscanf(entry_buf, CACHE_DATA_FMT, (int*)&t, v);
@@ -320,7 +319,7 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
        
        while (node) {
                /* ensure null termination of the key string */
-               keystr = strndup(node->node_key.dptr, node->node_key.dsize);
+               keystr = SMB_STRNDUP(node->node_key.dptr, node->node_key.dsize);
                
                /* 
                 * We don't use gencache_get function, because we need to iterate through
@@ -333,9 +332,9 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
                        node = node->next;
                        continue;
                }
-               entry = strndup(databuf.dptr, databuf.dsize);
+               entry = SMB_STRNDUP(databuf.dptr, databuf.dsize);
                SAFE_FREE(databuf.dptr);
-               valstr = (char*)malloc(sizeof(char) * (databuf.dsize - TIMEOUT_LEN));
+               valstr = SMB_MALLOC(databuf.dsize - TIMEOUT_LEN);
                sscanf(entry, CACHE_DATA_FMT, (int*)(&timeout), valstr);
                
                DEBUG(10, ("Calling function with arguments (key = %s, value = %s, timeout = %s)\n",
index 66a6e6cd8bc91adb6d455421d8d26130605d847f..d58165fed03271457f6ec31de9796215ce891d47 100644 (file)
@@ -209,15 +209,15 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
        from = charsets;
        to = charsets;
 
-       ret = (smb_iconv_t)malloc(sizeof(*ret));
+       ret = SMB_MALLOC_P(struct _smb_iconv_t);
        if (!ret) {
                errno = ENOMEM;
                return (smb_iconv_t)-1;
        }
-       memset(ret, 0, sizeof(*ret));
+       memset(ret, 0, sizeof(struct _smb_iconv_t));
 
-       ret->from_name = strdup(fromcode);
-       ret->to_name = strdup(tocode);
+       ret->from_name = SMB_STRDUP(fromcode);
+       ret->to_name = SMB_STRDUP(tocode);
 
        /* check for the simplest null conversion */
        if (strcasecmp(fromcode, tocode) == 0) {
index adf9ca34381e45d723450fe6cbf2b816e13d73db..8cf11b850398626e8e657f6f4e9ca492b02a030e 100644 (file)
@@ -65,7 +65,7 @@ static void add_interface(struct in_addr ip, struct in_addr nmask)
                return;
        }
 
-       iface = (struct interface *)malloc(sizeof(*iface));
+       iface = SMB_MALLOC_P(struct interface);
        if (!iface) return;
        
        ZERO_STRUCTPN(iface);
@@ -207,7 +207,7 @@ void load_interfaces(void)
 
        if (ptr) {
                while (*ptr) {
-                       char *ptr_cpy = strdup(*ptr);
+                       char *ptr_cpy = SMB_STRDUP(*ptr);
                        if (ptr_cpy) {
                                interpret_interface(ptr_cpy);
                                free(ptr_cpy);
index 9e88b4999cc1c0e12b37b6d8a7c8eb040aa8e809..6c4e8b8c837e59ac0d4bec0bf72dc4136935df35 100644 (file)
@@ -36,7 +36,7 @@
 char *escape_ldap_string_alloc(const char *s)
 {
        size_t len = strlen(s)+1;
-       char *output = malloc(len);
+       char *output = SMB_MALLOC(len);
        char *output_tmp;
        const char *sub;
        int i = 0;
@@ -65,7 +65,7 @@ char *escape_ldap_string_alloc(const char *s)
                
                if (sub) {
                        len = len + 3;
-                       output_tmp = realloc(output, len);
+                       output_tmp = SMB_REALLOC(output, len);
                        if (!output_tmp) { 
                                SAFE_FREE(output);
                                return NULL;
index ded3ac95bb48414ece41aec6ad33032ddeae08b6..dca4b94844ad7ddb02c21292493cabf8a63f4918 100644 (file)
@@ -190,7 +190,7 @@ static BOOL message_send_pid_internal(pid_t pid, int msg_type, const void *buf,
 
        kbuf = message_key_pid(pid);
 
-       dbuf.dptr = (void *)malloc(len + sizeof(rec));
+       dbuf.dptr = (void *)SMB_MALLOC(len + sizeof(rec));
        if (!dbuf.dptr)
                return False;
 
@@ -468,7 +468,7 @@ void message_register(int msg_type,
 {
        struct dispatch_fns *dfn;
 
-       dfn = (struct dispatch_fns *)malloc(sizeof(*dfn));
+       dfn = SMB_MALLOC_P(struct dispatch_fns);
 
        if (dfn != NULL) {
 
index e469b1da422102450abcea78f7af48f94bf0b5e1..49121d12ca177d8617ad221be419200bc70972c3 100644 (file)
@@ -175,7 +175,7 @@ smb_event_id_t smb_register_idle_event(smb_idle_event_fn *fn, void *data, time_t
                return SMB_EVENT_ID_INVALID;
        }
 
-       event = (struct smb_idle_list_ent *)malloc(sizeof(struct smb_idle_list_ent));
+       event = SMB_MALLOC_P(struct smb_idle_list_ent);
        if (!event) {
                DEBUG(0,("malloc() failed!\n"));
                return SMB_EVENT_ID_INVALID;
@@ -257,7 +257,7 @@ smb_event_id_t smb_register_exit_event(smb_exit_event_fn *fn, void *data)
                return SMB_EVENT_ID_INVALID;
        }
 
-       event = (struct smb_exit_list_ent *)malloc(sizeof(struct smb_exit_list_ent));
+       event = SMB_MALLOC_P(struct smb_exit_list_ent);
        if (!event) {
                DEBUG(0,("malloc() failed!\n"));
                return SMB_EVENT_ID_INVALID;
index 71f3959c2416cd5d3c45065843173ffff776aeab..a0cbfd2ee21cbad8cdcbe119524727484420e93c 100644 (file)
@@ -204,7 +204,7 @@ int ms_fnmatch(const char *pattern, const char *string, enum protocol_types prot
        }
 
        if (count != 0) {
-               max_n = calloc(sizeof(struct max_n), count);
+               max_n = SMB_CALLOC_ARRAY(struct max_n, count);
                if (!max_n) {
                        return -1;
                }
index b9d4df301d95e24b12df8378af21a3aad4b8d1b9..2b8d7613c188ba2879a9cc5a05b4ddea2c7c7bbd 100644 (file)
@@ -75,7 +75,7 @@ NTSTATUS dupalloc_luid_attr(TALLOC_CTX *mem_ctx, LUID_ATTR **new_la, LUID_ATTR *
        if ( !old_la )
                return NT_STATUS_OK;
 
-       *new_la = (LUID_ATTR *)talloc(mem_ctx, sizeof(LUID_ATTR));
+       *new_la = TALLOC_P(mem_ctx, LUID_ATTR);
        ALLOC_CHECK(new_la, ret, done, "dupalloc_luid_attr");
 
        (*new_la)->luid.high = old_la->luid.high;
@@ -97,7 +97,7 @@ NTSTATUS init_privilege(PRIVILEGE_SET **priv_set)
        TALLOC_CTX *mem_ctx = talloc_init("privilege set");
        ALLOC_CHECK(mem_ctx, ret, done, "init_privilege");
 
-       *priv_set = talloc_zero(mem_ctx, sizeof(PRIVILEGE_SET));
+       *priv_set = TALLOC_ZERO_P(mem_ctx, PRIVILEGE_SET);
        ALLOC_CHECK(*priv_set, ret, done, "init_privilege");
 
        (*priv_set)->mem_ctx = mem_ctx;
@@ -112,7 +112,7 @@ NTSTATUS init_priv_with_ctx(TALLOC_CTX *mem_ctx, PRIVILEGE_SET **priv_set)
 {
        NTSTATUS ret;
 
-       *priv_set = talloc_zero(mem_ctx, sizeof(PRIVILEGE_SET));
+       *priv_set = TALLOC_ZERO_P(mem_ctx, PRIVILEGE_SET);
        ALLOC_CHECK(*priv_set, ret, done, "init_privilege");
 
        (*priv_set)->mem_ctx = mem_ctx;
@@ -154,7 +154,7 @@ NTSTATUS add_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
 
        /* we can allocate memory to add the new privilege */
 
-       new_set = (LUID_ATTR *)talloc_realloc(priv_set->mem_ctx, priv_set->set, (priv_set->count + 1) * (sizeof(LUID_ATTR)));
+       new_set = TALLOC_REALLOC_ARRAY(priv_set->mem_ctx, priv_set->set, LUID_ATTR, priv_set->count + 1);
        ALLOC_CHECK(new_set, ret, done, "add_privilege");
 
        new_set[priv_set->count].luid.high = set.luid.high;
@@ -269,7 +269,7 @@ NTSTATUS remove_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
 
        old_set = priv_set->set;
 
-       new_set = (LUID_ATTR *)talloc(priv_set->mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
+       new_set = TALLOC_ARRAY(priv_set->mem_ctx, LUID_ATTR, priv_set->count - 1);
        ALLOC_CHECK(new_set, ret, done, "remove_privilege");
 
        for (i=0, j=0; i < priv_set->count; i++) {
@@ -329,7 +329,7 @@ NTSTATUS dup_priv_set(PRIVILEGE_SET *new_priv_set, PRIVILEGE_SET *priv_set)
 
        old_set = priv_set->set;
 
-       new_set = (LUID_ATTR *)talloc(new_priv_set->mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
+       new_set = TALLOC_ARRAY(new_priv_set->mem_ctx, LUID_ATTR, priv_set->count - 1);
        ALLOC_CHECK(new_set, ret, done, "dup_priv_set");
 
        for (i=0; i < priv_set->count; i++) {
index 8c54c970433ce9e04c8571be74c3a6a9f5e528be..e44d9aa940ed763c5ee2aea7570855cdd513b4c9 100644 (file)
@@ -80,7 +80,7 @@ NTSTATUS sec_ace_add_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, unsigned
 
        *num += 1;
        
-       if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0)
+       if((new[0] = TALLOC_ZERO_ARRAY(ctx, SEC_ACE, *num )) == 0)
                return NT_STATUS_NO_MEMORY;
 
        for (i = 0; i < *num - 1; i ++)
@@ -124,7 +124,7 @@ NTSTATUS sec_ace_del_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, uint32 *n
 
        if (!ctx || !new || !old || !sid || !num)  return NT_STATUS_INVALID_PARAMETER;
 
-       if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0)
+       if((new[0] = TALLOC_ZERO_ARRAY(ctx, SEC_ACE, *num )) == 0)
                return NT_STATUS_NO_MEMORY;
 
        for (i = 0; i < *num; i ++) {
index 756685a8216192975d5e47792dcfbf464749938e..e213e0d9a0c2c2e5efcb29b14c113608d3557af2 100644 (file)
@@ -32,7 +32,7 @@ SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, uint16 revision, int num_aces, SEC_ACE *a
        SEC_ACL *dst;
        int i;
 
-       if((dst = (SEC_ACL *)talloc_zero(ctx,sizeof(SEC_ACL))) == NULL)
+       if((dst = TALLOC_ZERO_P(ctx,SEC_ACL)) == NULL)
                return NULL;
 
        dst->revision = revision;
@@ -46,7 +46,7 @@ SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, uint16 revision, int num_aces, SEC_ACE *a
           positive number. */
 
        if ((num_aces) && 
-            ((dst->ace = (SEC_ACE *)talloc(ctx, sizeof(SEC_ACE) * num_aces)) 
+            ((dst->ace = TALLOC_ARRAY(ctx, SEC_ACE, num_aces)) 
              == NULL)) {
                return NULL;
        }
index 411185dbfa6948d5dc23c6931c796fb28c85e2b8..686a4edf77ccb60f9a6ba9e661abc484cc3a0bfa 100644 (file)
@@ -187,7 +187,7 @@ SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision, uint16 type,
 
        *sd_size = 0;
 
-       if(( dst = (SEC_DESC *)talloc_zero(ctx, sizeof(SEC_DESC))) == NULL)
+       if(( dst = TALLOC_ZERO_P(ctx, SEC_DESC)) == NULL)
                return NULL;
 
        dst->revision = revision;
@@ -284,7 +284,7 @@ SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc)
 {
        SEC_DESC_BUF *dst;
 
-       if((dst = (SEC_DESC_BUF *)talloc_zero(ctx, sizeof(SEC_DESC_BUF))) == NULL)
+       if((dst = TALLOC_ZERO_P(ctx, SEC_DESC_BUF)) == NULL)
                return NULL;
 
        /* max buffer size (allocated size) */
@@ -417,7 +417,7 @@ SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr,
 
        the_acl = parent_ctr->dacl;
 
-       if (!(new_ace_list = talloc(ctx, sizeof(SEC_ACE) * the_acl->num_aces))) 
+       if (!(new_ace_list = TALLOC_ARRAY(ctx, SEC_ACE, the_acl->num_aces))) 
                return NULL;
 
        for (i = 0; the_acl && i < the_acl->num_aces; i++) {
index 3e5512c734205d77720525cab9dc89af7af0972a..2267fba9c8865d59696368e0b65f68812645b1b9 100644 (file)
@@ -33,7 +33,7 @@ static char *mutex_server_name;
 
 BOOL grab_server_mutex(const char *name)
 {
-       mutex_server_name = strdup(name);
+       mutex_server_name = SMB_STRDUP(name);
        if (!mutex_server_name) {
                DEBUG(0,("grab_server_mutex: malloc failed for %s\n", name));
                return False;
index a1f42d92ee01e09ae1d35046dd4516f21fb89975..7e485457b084a3158175942d5260bbe8a3bd8fe5 100644 (file)
@@ -239,7 +239,7 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
                i++;
        i++;
 
-       names = (char**)malloc( sizeof(char*)*i );
+       names = SMB_MALLOC_ARRAY( char*, i );
        if ( !names ) {
                DEBUG(0,("get_attr_list: out of memory\n"));
                return NULL;
@@ -247,7 +247,7 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
 
        i = 0;
        while ( table[i].attrib != LDAP_ATTR_LIST_END ) {
-               names[i] = strdup( table[i].name );
+               names[i] = SMB_STRDUP( table[i].name );
                i++;
        }
        names[i] = NULL;
@@ -295,7 +295,7 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
        if (!size) {
                /* Upgrade 2.2 style entry */
                char *p;
-               char* old_style_key = strdup(*dn);
+               char* old_style_key = SMB_STRDUP(*dn);
                char *data;
                fstring old_style_pw;
                
@@ -408,7 +408,7 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
 #endif
 
        if (mods == NULL) {
-               mods = (LDAPMod **) malloc(sizeof(LDAPMod *));
+               mods = SMB_MALLOC_P(LDAPMod *);
                if (mods == NULL) {
                        DEBUG(0, ("make_a_mod: out of memory!\n"));
                        return;
@@ -422,19 +422,19 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
        }
 
        if (mods[i] == NULL) {
-               mods = (LDAPMod **) Realloc (mods, (i + 2) * sizeof (LDAPMod *));
+               mods = SMB_REALLOC_ARRAY (mods, LDAPMod *, i + 2);
                if (mods == NULL) {
                        DEBUG(0, ("make_a_mod: out of memory!\n"));
                        return;
                }
-               mods[i] = (LDAPMod *) malloc(sizeof(LDAPMod));
+               mods[i] = SMB_MALLOC_P(LDAPMod);
                if (mods[i] == NULL) {
                        DEBUG(0, ("make_a_mod: out of memory!\n"));
                        return;
                }
                mods[i]->mod_op = modop;
                mods[i]->mod_values = NULL;
-               mods[i]->mod_type = strdup(attribute);
+               mods[i]->mod_type = SMB_STRDUP(attribute);
                mods[i + 1] = NULL;
        }
 
@@ -445,8 +445,7 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
                if (mods[i]->mod_values != NULL) {
                        for (; mods[i]->mod_values[j] != NULL; j++);
                }
-               mods[i]->mod_values = (char **)Realloc(mods[i]->mod_values,
-                                              (j + 2) * sizeof (char *));
+               mods[i]->mod_values = SMB_REALLOC_ARRAY(mods[i]->mod_values, char *, j + 2);
                                               
                if (mods[i]->mod_values == NULL) {
                        DEBUG (0, ("make_a_mod: Memory allocation failure!\n"));
@@ -574,7 +573,7 @@ static void smbldap_store_state(LDAP *ld, struct smbldap_state *smbldap_state)
                return;
        }
 
-       t = smb_xmalloc(sizeof(*t));
+       t = SMB_XMALLOC_P(struct smbldap_state_lookup);
        ZERO_STRUCTP(t);
        
        DLIST_ADD_END(smbldap_state_lookup_list, t, tmp);
@@ -718,11 +717,11 @@ static int rebindproc_with_state  (LDAP * ld, char **whop, char **credp,
                DEBUG(5,("rebind_proc_with_state: Rebinding as \"%s\"\n", 
                          ldap_state->bind_dn));
 
-               *whop = strdup(ldap_state->bind_dn);
+               *whop = SMB_STRDUP(ldap_state->bind_dn);
                if (!*whop) {
                        return LDAP_NO_MEMORY;
                }
-               *credp = strdup(ldap_state->bind_secret);
+               *credp = SMB_STRDUP(ldap_state->bind_secret);
                if (!*credp) {
                        SAFE_FREE(*whop);
                        return LDAP_NO_MEMORY;
@@ -1211,7 +1210,7 @@ void smbldap_free_struct(struct smbldap_state **ldap_state)
 
 NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, const char *location, struct smbldap_state **smbldap_state) 
 {
-       *smbldap_state = talloc_zero(mem_ctx, sizeof(**smbldap_state));
+       *smbldap_state = TALLOC_ZERO_P(mem_ctx, struct smbldap_state);
        if (!*smbldap_state) {
                DEBUG(0, ("talloc() failed for ldapsam private_data!\n"));
                return NT_STATUS_NO_MEMORY;
index 92eff625f39129166f6f912c6d2bb6009eabc2ff..6ec3bb4a76e4fba78da811b125c9758abc8f5c46 100644 (file)
@@ -224,7 +224,7 @@ static char * realloc_expand_env_var(char *str, char *p)
 
        r = p + 3;
        copylen = q - r;
-       envname = (char *)malloc(copylen + 1 + 4); /* reserve space for use later add %$() chars */
+       envname = (char *)SMB_MALLOC(copylen + 1 + 4); /* reserve space for use later add %$() chars */
        if (envname == NULL) return NULL;
        strncpy(envname,r,copylen);
        envname[copylen] = '\0';
@@ -508,7 +508,7 @@ char *alloc_sub_basic(const char *smb_name, const char *str)
                return NULL;
        }
        
-       a_string = strdup(str);
+       a_string = SMB_STRDUP(str);
        if (a_string == NULL) {
                DEBUG(0, ("alloc_sub_specified: Out of memory!\n"));
                return NULL;
@@ -526,7 +526,7 @@ char *alloc_sub_basic(const char *smb_name, const char *str)
                        t = realloc_string_sub(t, "%U", r);
                        break;
                case 'G' :
-                       r = strdup(smb_name);
+                       r = SMB_STRDUP(smb_name);
                        if (r == NULL) goto error;
                        if ((pass = Get_Pwnam(r))!=NULL) {
                                t = realloc_string_sub(t, "%G", gidtoname(pass->pw_gid));
@@ -623,7 +623,7 @@ char *alloc_sub_specified(const char *input_string,
        char *a_string, *ret_string;
        char *b, *p, *s, *t;
 
-       a_string = strdup(input_string);
+       a_string = SMB_STRDUP(input_string);
        if (a_string == NULL) {
                DEBUG(0, ("alloc_sub_specified: Out of memory!\n"));
                return NULL;
@@ -700,7 +700,7 @@ char *alloc_sub_advanced(int snum, const char *user,
        char *a_string, *ret_string;
        char *b, *p, *s, *t, *h;
 
-       a_string = strdup(str);
+       a_string = SMB_STRDUP(str);
        if (a_string == NULL) {
                DEBUG(0, ("alloc_sub_specified: Out of memory!\n"));
                return NULL;
index f33d1ae7d576737b474ddacdd1236291237458ae..7434cbe35eea878021fa5bc3b7430b21629ebfc4 100644 (file)
@@ -1096,7 +1096,7 @@ static char **extract_args(const char *command)
        for( argcl = 1; ptr; ptr = strtok(NULL, " \t"))
                argcl++;
 
-       if((argl = (char **)malloc((argcl + 1) * sizeof(char *))) == NULL)
+       if((argl = (char **)SMB_MALLOC((argcl + 1) * sizeof(char *))) == NULL)
                return NULL;
 
        /*
@@ -1178,7 +1178,7 @@ int sys_popen(const char *command)
                goto err_exit;
        }
 
-       if((entry = (popen_list *)malloc(sizeof(popen_list))) == NULL)
+       if((entry = SMB_MALLOC_P(popen_list)) == NULL)
                goto err_exit;
 
        ZERO_STRUCTP(entry);
index fd2ed24a17c3c57845ca2d195efb87ce53e3df6f..eed607ee8fbde0915d0a9c5b44476b8d45e0a642 100644 (file)
@@ -53,7 +53,7 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups, in
                return -1;
        }
        
-       gids_saved = (gid_t *)malloc(sizeof(gid_t) * (ngrp_saved+1));
+       gids_saved = SMB_MALLOC_ARRAY(gid_t, ngrp_saved+1);
        if (!gids_saved) {
                errno = ENOMEM;
                return -1;
@@ -149,7 +149,7 @@ BOOL getgroups_user(const char *user, gid_t primary_gid,
        int i;
 
        max_grp = groups_max();
-       temp_groups = (gid_t *)malloc(sizeof(gid_t) * max_grp);
+       temp_groups = SMB_MALLOC_ARRAY(gid_t, max_grp);
        if (! temp_groups) {
                return False;
        }
@@ -158,7 +158,7 @@ BOOL getgroups_user(const char *user, gid_t primary_gid,
                
                gid_t *groups_tmp;
                
-               groups_tmp = Realloc(temp_groups, sizeof(gid_t) * max_grp);
+               groups_tmp = SMB_REALLOC_ARRAY(temp_groups, gid_t, max_grp);
                
                if (!groups_tmp) {
                        SAFE_FREE(temp_groups);
@@ -207,7 +207,7 @@ NTSTATUS pdb_default_enum_group_memberships(struct pdb_methods *methods,
                smb_panic("primary group missing");
        }
 
-       *sids = malloc(sizeof(**sids) * *num_groups);
+       *sids = SMB_MALLOC_ARRAY(DOM_SID, *num_groups);
 
        if (*sids == NULL) {
                SAFE_FREE(gids);
index 093a221fd3d44b40fe29d07da719b826c4a9ed1f..cafe0654790b31abc2c3ab6744a2381576e78328 100644 (file)
@@ -54,6 +54,8 @@
 
 #include "includes.h"
 
+/* Max allowable allococation - 256mb - 0x10000000 */
+#define MAX_TALLOC_SIZE (1024*1024*256)
 
 /**
  * Start of linked list of all talloc pools.
@@ -100,7 +102,7 @@ static TALLOC_CTX *talloc_init_internal(void)
 {
        TALLOC_CTX *t;
 
-       t = (TALLOC_CTX *)malloc(sizeof(TALLOC_CTX));
+       t = (TALLOC_CTX *)SMB_MALLOC(sizeof(TALLOC_CTX));
        if (t) {
                t->list = NULL;
                t->total_alloc_size = 0;
@@ -143,16 +145,20 @@ static TALLOC_CTX *talloc_init_internal(void)
 
 
 /** Allocate a bit of memory from the specified pool **/
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_(TALLOC_CTX *t, size_t size)
+#else
 void *talloc(TALLOC_CTX *t, size_t size)
+#endif
 {
        void *p;
        struct talloc_chunk *tc;
 
        if (!t || size == 0) return NULL;
 
-       p = malloc(size);
+       p = SMB_MALLOC(size);
        if (p) {
-               tc = malloc(sizeof(*tc));
+               tc = SMB_MALLOC(sizeof(*tc));
                if (tc) {
                        tc->ptr = p;
                        tc->size = size;
@@ -167,8 +173,25 @@ void *talloc(TALLOC_CTX *t, size_t size)
        return p;
 }
 
+/** Allocate an array of count elements of size x */
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_array_(TALLOC_CTX *ctx, size_t el_size, unsigned int count)
+#else
+void *talloc_array(TALLOC_CTX *ctx, size_t el_size, unsigned int count)
+#endif
+{
+        if (count >= MAX_TALLOC_SIZE/el_size) {
+                return NULL;
+        }
+       return TALLOC(ctx, el_size * count);
+}
+
 /** A talloc version of realloc */
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_realloc_(TALLOC_CTX *t, void *ptr, size_t size)
+#else
 void *talloc_realloc(TALLOC_CTX *t, void *ptr, size_t size)
+#endif
 {
        struct talloc_chunk *tc;
        void *new_ptr;
@@ -179,11 +202,11 @@ void *talloc_realloc(TALLOC_CTX *t, void *ptr, size_t size)
 
        /* realloc(NULL) is equavalent to malloc() */
        if (ptr == NULL)
-               return talloc(t, size);
+               return TALLOC(t, size);
 
        for (tc=t->list; tc; tc=tc->next) {
                if (tc->ptr == ptr) {
-                       new_ptr = Realloc(ptr, size);
+                       new_ptr = SMB_REALLOC(ptr, size);
                        if (new_ptr) {
                                t->total_alloc_size += (size - tc->size);
                                tc->size = size;
@@ -195,6 +218,19 @@ void *talloc_realloc(TALLOC_CTX *t, void *ptr, size_t size)
        return NULL;
 }
 
+/** Re-allocate an array of count elements of size x */
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_realloc_array_(TALLOC_CTX *ctx, void *ptr, size_t el_size, unsigned int count)
+#else
+void *talloc_realloc_array(TALLOC_CTX *ctx, void *ptr, size_t el_size, unsigned int count)
+#endif
+{
+        if (count >= MAX_TALLOC_SIZE/el_size) {
+                return NULL;
+        }
+       return TALLOC_REALLOC(ctx, ptr, el_size * count);
+}
+
 /** Destroy all the memory allocated inside @p t, but not @p t
  * itself. */
 void talloc_destroy_pool(TALLOC_CTX *t)
@@ -246,9 +282,13 @@ const char * talloc_pool_name(TALLOC_CTX const *t)
 
 
 /** talloc and zero memory. */
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_zero_(TALLOC_CTX *t, size_t size)
+#else
 void *talloc_zero(TALLOC_CTX *t, size_t size)
+#endif
 {
-       void *p = talloc(t, size);
+       void *p = TALLOC(t, size);
 
        if (p)
                memset(p, '\0', size);
@@ -256,10 +296,32 @@ void *talloc_zero(TALLOC_CTX *t, size_t size)
        return p;
 }
 
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_zero_array_(TALLOC_CTX *t, size_t el_size, unsigned int count)
+#else
+void *talloc_zero_array(TALLOC_CTX *t, size_t el_size, unsigned int count)
+#endif
+{
+#if defined(PARANOID_MALLOC_CHECKER)
+       void *p = talloc_array_(t, el_size, count);
+#else
+       void *p = talloc_array(t, el_size, count);
+#endif
+
+       if (p)
+               memset(p, '\0', el_size*count);
+
+       return p;
+}
+
 /** memdup with a talloc. */
+#if defined(PARANOID_MALLOC_CHECKER)
+void *talloc_memdup_(TALLOC_CTX *t, const void *p, size_t size)
+#else
 void *talloc_memdup(TALLOC_CTX *t, const void *p, size_t size)
+#endif
 {
-       void *newp = talloc(t,size);
+       void *newp = TALLOC(t,size);
 
        if (newp)
                memcpy(newp, p, size);
@@ -271,7 +333,7 @@ void *talloc_memdup(TALLOC_CTX *t, const void *p, size_t size)
 char *talloc_strdup(TALLOC_CTX *t, const char *p)
 {
        if (p)
-               return talloc_memdup(t, p, strlen(p) + 1);
+               return TALLOC_MEMDUP(t, p, strlen(p) + 1);
        else
                return NULL;
 }
@@ -298,7 +360,7 @@ char *talloc_strdup_upper(TALLOC_CTX *t, const char *p)
 smb_ucs2_t *talloc_strdup_w(TALLOC_CTX *t, const smb_ucs2_t *p)
 {
        if (p)
-               return talloc_memdup(t, p, (strlen_w(p) + 1) * sizeof(smb_ucs2_t));
+               return TALLOC_MEMDUP(t, p, (strlen_w(p) + 1) * sizeof(smb_ucs2_t));
        else
                return NULL;
 }
@@ -329,7 +391,7 @@ smb_ucs2_t *talloc_strdup_w(TALLOC_CTX *t, const smb_ucs2_t *p)
 
        len = vsnprintf(NULL, 0, fmt, ap2);
 
-       ret = talloc(t, len+1);
+       ret = TALLOC(t, len+1);
        if (ret) {
                VA_COPY(ap2, ap);
                vsnprintf(ret, len+1, fmt, ap2);
@@ -373,7 +435,7 @@ smb_ucs2_t *talloc_strdup_w(TALLOC_CTX *t, const smb_ucs2_t *p)
        s_len = strlen(s);
        len = vsnprintf(NULL, 0, fmt, ap2);
 
-       s = talloc_realloc(t, s, s_len + len+1);
+       s = TALLOC_REALLOC(t, s, s_len + len+1);
        if (!s) return NULL;
 
        VA_COPY(ap2, ap);
index e63e0b29659c2ff425e377382c97fd8556e22d04..e7b537151ff7cac32054029f170307f51f70a51f 100644 (file)
@@ -190,8 +190,7 @@ static int TimeZoneFaster(time_t t)
     time_t low,high;
 
     zone = TimeZone(t);
-    tdt = (struct dst_table *)Realloc(dst_table,
-                                             sizeof(dst_table[0])*(i+1));
+    tdt = SMB_REALLOC_ARRAY(dst_table, struct dst_table, i+1);
     if (!tdt) {
       DEBUG(0,("TimeZoneFaster: out of memory!\n"));
       SAFE_FREE(dst_table);
index 0d5c7d7f07b2229f2ab9ebc98773326f034e3c12..ce8495e82edc780c1c85f97694e0c60f0cd143d2 100644 (file)
@@ -23,6 +23,9 @@
 
 #include "includes.h"
 
+/* Max allowable allococation - 256mb - 0x10000000 */
+#define MAX_ALLOC_SIZE (1024*1024*256)
+
 #if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
 #ifdef WITH_NISPLUS_HOME
 #ifdef BROKEN_NISPLUS_INCLUDE_FILES
@@ -79,7 +82,7 @@ static char **smb_my_netbios_names;
 BOOL set_global_myname(const char *myname)
 {
        SAFE_FREE(smb_myname);
-       smb_myname = strdup(myname);
+       smb_myname = SMB_STRDUP(myname);
        if (!smb_myname)
                return False;
        strupper_m(smb_myname);
@@ -98,7 +101,7 @@ const char *global_myname(void)
 BOOL set_global_myworkgroup(const char *myworkgroup)
 {
        SAFE_FREE(smb_myworkgroup);
-       smb_myworkgroup = strdup(myworkgroup);
+       smb_myworkgroup = SMB_STRDUP(myworkgroup);
        if (!smb_myworkgroup)
                return False;
        strupper_m(smb_myworkgroup);
@@ -117,7 +120,7 @@ const char *lp_workgroup(void)
 BOOL set_global_scope(const char *scope)
 {
        SAFE_FREE(smb_scope);
-       smb_scope = strdup(scope);
+       smb_scope = SMB_STRDUP(scope);
        if (!smb_scope)
                return False;
        strupper_m(smb_scope);
@@ -151,7 +154,7 @@ static BOOL allocate_my_netbios_names_array(size_t number)
        free_netbios_names_array();
 
        smb_num_netbios_names = number + 1;
-       smb_my_netbios_names = (char **)malloc( sizeof(char *) * smb_num_netbios_names );
+       smb_my_netbios_names = SMB_MALLOC_ARRAY( char *, smb_num_netbios_names );
 
        if (!smb_my_netbios_names)
                return False;
@@ -164,7 +167,7 @@ static BOOL set_my_netbios_names(const char *name, int i)
 {
        SAFE_FREE(smb_my_netbios_names[i]);
 
-       smb_my_netbios_names[i] = strdup(name);
+       smb_my_netbios_names[i] = SMB_STRDUP(name);
        if (!smb_my_netbios_names[i])
                return False;
        strupper_m(smb_my_netbios_names[i]);
@@ -301,7 +304,7 @@ void add_gid_to_array_unique(gid_t gid, gid_t **gids, int *num)
                        return;
        }
        
-       *gids = Realloc(*gids, (*num+1) * sizeof(gid_t));
+       *gids = SMB_REALLOC_ARRAY(*gids, gid_t, *num+1);
 
        if (*gids == NULL)
                return;
@@ -351,7 +354,7 @@ const char *get_numlist(const char *p, uint32 **num, int *count)
        while ((p = Atoic(p, &val, ":,")) != NULL && (*p) != ':') {
                uint32 *tn;
                
-               tn = Realloc((*num), ((*count)+1) * sizeof(uint32));
+               tn = SMB_REALLOC_ARRAY((*num), uint32, (*count)+1);
                if (tn == NULL) {
                        SAFE_FREE(*num);
                        return NULL;
@@ -727,7 +730,7 @@ ssize_t transfer_file_internal(int infd, int outfd, size_t n, ssize_t (*read_fn)
        size_t num_to_read_thistime;
        size_t num_written = 0;
 
-       if ((buf = malloc(TRANSFER_BUF_SIZE)) == NULL)
+       if ((buf = SMB_MALLOC(TRANSFER_BUF_SIZE)) == NULL)
                return -1;
 
        while (total < n) {
@@ -855,6 +858,82 @@ BOOL yesno(char *p)
        return(False);
 }
 
+#if defined(PARANOID_MALLOC_CHECKER)
+
+/****************************************************************************
+ Internal malloc wrapper. Externally visible.
+****************************************************************************/
+
+void *malloc_(size_t size)
+{
+#undef malloc
+       /* If we don't add an amount here the glibc memset seems to write
+          one byte over. */
+       return malloc(size+16);
+#define malloc(s) __ERROR_DONT_USE_MALLOC_DIRECTLY
+}
+
+/****************************************************************************
+ Internal calloc wrapper. Not externally visible.
+****************************************************************************/
+
+static void *calloc_(size_t count, size_t size)
+{
+#undef calloc
+       /* If we don't add an amount here the glibc memset seems to write
+          one byte over. */
+       return calloc(count+1, size);
+#define calloc(n,s) __ERROR_DONT_USE_CALLOC_DIRECTLY
+}
+
+/****************************************************************************
+ Internal realloc wrapper. Not externally visible.
+****************************************************************************/
+
+static void *realloc_(void *ptr, size_t size)
+{
+#undef realloc
+       /* If we don't add an amount here the glibc memset seems to write
+          one byte over. */
+       return realloc(ptr, size+16);
+#define realloc(p,s) __ERROR_DONT_USE_RELLOC_DIRECTLY
+}
+
+#endif /* PARANOID_MALLOC_CHECKER */
+
+/****************************************************************************
+ Type-safe malloc.
+****************************************************************************/
+
+void *malloc_array(size_t el_size, unsigned int count)
+{
+       if (count >= MAX_ALLOC_SIZE/el_size) {
+               return NULL;
+       }
+
+#if defined(PARANOID_MALLOC_CHECKER)
+       return malloc_(el_size*count);
+#else
+       return malloc(el_size*count);
+#endif
+}
+
+/****************************************************************************
+ Type-safe calloc.
+****************************************************************************/
+
+void *calloc_array(size_t size, size_t nmemb)
+{
+       if (nmemb >= MAX_ALLOC_SIZE/size) {
+               return NULL;
+       }
+#if defined(PARANOID_MALLOC_CHECKER)
+       return calloc_(nmemb, size);
+#else
+       return calloc(nmemb, size);
+#endif
+}
+
 /****************************************************************************
  Expand a pointer to be a particular size.
 ****************************************************************************/
@@ -869,10 +948,17 @@ void *Realloc(void *p,size_t size)
                return NULL;
        }
 
+#if defined(PARANOID_MALLOC_CHECKER)
+       if (!p)
+               ret = (void *)malloc_(size);
+       else
+               ret = (void *)realloc_(p,size);
+#else
        if (!p)
                ret = (void *)malloc(size);
        else
                ret = (void *)realloc(p,size);
+#endif
 
        if (!ret)
                DEBUG(0,("Memory allocation error: failed to expand to %d bytes\n",(int)size));
@@ -880,17 +966,16 @@ void *Realloc(void *p,size_t size)
        return(ret);
 }
 
-void *Realloc_zero(void *ptr, size_t size)
+/****************************************************************************
+ Type-safe realloc.
+****************************************************************************/
+
+void *realloc_array(void *p,size_t el_size, unsigned int count)
 {
-       void *tptr = NULL;
-               
-       tptr = Realloc(ptr, size);
-       if(tptr == NULL)
+       if (count >= MAX_ALLOC_SIZE/el_size) {
                return NULL;
-
-       memset((char *)tptr,'\0',size);
-
-       return tptr;
+       }
+       return Realloc(p,el_size*count);
 }
 
 /****************************************************************************
@@ -1595,8 +1680,7 @@ void set_namearray(name_compare_entry **ppname_array, char *namelist)
        if(num_entries == 0)
                return;
 
-       if(( (*ppname_array) = (name_compare_entry *)malloc(
-                                       (num_entries + 1) * sizeof(name_compare_entry))) == NULL) {
+       if(( (*ppname_array) = SMB_MALLOC_ARRAY(name_compare_entry, num_entries + 1)) == NULL) {
                DEBUG(0,("set_namearray: malloc fail\n"));
                return;
        }
@@ -1619,7 +1703,7 @@ void set_namearray(name_compare_entry **ppname_array, char *namelist)
                        break;
 
                (*ppname_array)[i].is_wild = ms_has_wild(nameptr);
-               if(((*ppname_array)[i].name = strdup(nameptr)) == NULL) {
+               if(((*ppname_array)[i].name = SMB_STRDUP(nameptr)) == NULL) {
                        DEBUG(0,("set_namearray: malloc fail (1)\n"));
                        return;
                }
@@ -2115,14 +2199,18 @@ int smb_mkstemp(char *template)
  malloc that aborts with smb_panic on fail or zero size.
  *****************************************************************/  
 
-void *smb_xmalloc(size_t size)
+void *smb_xmalloc_array(size_t size, unsigned int count)
 {
        void *p;
        if (size == 0)
-               smb_panic("smb_xmalloc: called with zero size.\n");
-       if ((p = malloc(size)) == NULL) {
-               DEBUG(0, ("smb_xmalloc() failed to allocate %lu bytes\n", (unsigned long)size));
-               smb_panic("smb_xmalloc: malloc fail.\n");
+               smb_panic("smb_xmalloc_array: called with zero size.\n");
+        if (count >= MAX_ALLOC_SIZE/size) {
+                smb_panic("smb_xmalloc: alloc size too large.\n");
+        }
+       if ((p = SMB_MALLOC(size*count)) == NULL) {
+               DEBUG(0, ("smb_xmalloc_array failed to allocate %lu * %lu bytes\n",
+                       (unsigned long)size, (unsigned long)count));
+               smb_panic("smb_xmalloc_array: malloc fail.\n");
        }
        return p;
 }
@@ -2134,7 +2222,7 @@ void *smb_xmalloc(size_t size)
 void *smb_xmemdup(const void *p, size_t size)
 {
        void *p2;
-       p2 = smb_xmalloc(size);
+       p2 = SMB_XMALLOC_ARRAY(unsigned char,size);
        memcpy(p2, p, size);
        return p2;
 }
@@ -2145,10 +2233,19 @@ void *smb_xmemdup(const void *p, size_t size)
 
 char *smb_xstrdup(const char *s)
 {
+#if defined(PARANOID_MALLOC_CHECKER)
+#ifdef strdup
+#undef strdup
+#endif
+#endif
        char *s1 = strdup(s);
+#if defined(PARANOID_MALLOC_CHECKER)
+#define strdup(s) __ERROR_DONT_USE_STRDUP_DIRECTLY
+#endif
        if (!s1)
                smb_panic("smb_xstrdup: malloc fail\n");
        return s1;
+
 }
 
 /**
@@ -2157,7 +2254,15 @@ char *smb_xstrdup(const char *s)
 
 char *smb_xstrndup(const char *s, size_t n)
 {
+#if defined(PARANOID_MALLOC_CHECKER)
+#ifdef strndup
+#undef strndup
+#endif
+#endif
        char *s1 = strndup(s, n);
+#if defined(PARANOID_MALLOC_CHECKER)
+#define strndup(s,n) __ERROR_DONT_USE_STRNDUP_DIRECTLY
+#endif
        if (!s1)
                smb_panic("smb_xstrndup: malloc fail\n");
        return s1;
@@ -2189,7 +2294,7 @@ void *memdup(const void *p, size_t size)
        void *p2;
        if (size == 0)
                return NULL;
-       p2 = malloc(size);
+       p2 = SMB_MALLOC(size);
        if (!p2)
                return NULL;
        memcpy(p2, p, size);
index 303d961df57de7b8b7dfa680d8d2016a87743bf2..963d610beffb5737d84e031dbf20b956be112b84 100644 (file)
@@ -282,7 +282,7 @@ char *fgets_slash(char *s2,int maxlen,XFILE *f)
 
        if (!s2) {
                maxlen = MIN(maxlen,8);
-               s = (char *)malloc(maxlen);
+               s = (char *)SMB_MALLOC(maxlen);
        }
 
        if (!s) {
@@ -325,7 +325,7 @@ char *fgets_slash(char *s2,int maxlen,XFILE *f)
                        char *t;
          
                        maxlen *= 2;
-                       t = (char *)Realloc(s,maxlen);
+                       t = (char *)SMB_REALLOC(s,maxlen);
                        if (!t) {
                                DEBUG(0,("fgets_slash: failed to expand buffer!\n"));
                                SAFE_FREE(s);
@@ -358,7 +358,7 @@ char *file_pload(char *syscmd, size_t *size)
        total = 0;
 
        while ((n = read(fd, buf, sizeof(buf))) > 0) {
-               tp = Realloc(p, total + n + 1);
+               tp = SMB_REALLOC(p, total + n + 1);
                if (!tp) {
                        DEBUG(0,("file_pload: failed to expand buffer!\n"));
                        close(fd);
@@ -397,7 +397,7 @@ char *fd_load(int fd, size_t *size)
                return NULL;
        }
 
-       p = (char *)malloc(sbuf.st_size+1);
+       p = (char *)SMB_MALLOC(sbuf.st_size+1);
        if (!p) {
                return NULL;
        }
@@ -492,7 +492,7 @@ static char **file_lines_parse(char *p, size_t size, int *numlines)
                if (s[0] == '\n') i++;
        }
 
-       ret = (char **)malloc(sizeof(ret[0])*(i+2));
+       ret = SMB_MALLOC_ARRAY(char *, i+2);
        if (!ret) {
                SAFE_FREE(p);
                return NULL;
index 4431d6a2a476603edcb110b09ba546d6573079fd..1b01cae5fa98b8942573bc27f1bb59d77790f121 100644 (file)
@@ -33,7 +33,7 @@ struct sys_grent * getgrent_list(void)
        struct sys_grent *gent;
        struct group *grp;
        
-       gent = (struct sys_grent *) malloc(sizeof(struct sys_grent));
+       gent = SMB_MALLOC_P(struct sys_grent);
        if (gent == NULL) {
                DEBUG (0, ("Out of memory in getgrent_list!\n"));
                return NULL;
@@ -53,11 +53,11 @@ struct sys_grent * getgrent_list(void)
                int i,num;
                
                if (grp->gr_name) {
-                       if ((gent->gr_name = strdup(grp->gr_name)) == NULL)
+                       if ((gent->gr_name = SMB_STRDUP(grp->gr_name)) == NULL)
                                goto err;
                }
                if (grp->gr_passwd) {
-                       if ((gent->gr_passwd = strdup(grp->gr_passwd)) == NULL)
+                       if ((gent->gr_passwd = SMB_STRDUP(grp->gr_passwd)) == NULL)
                                goto err;
                }
                gent->gr_gid = grp->gr_gid;
@@ -67,20 +67,20 @@ struct sys_grent * getgrent_list(void)
                        ;
                
                /* alloc space for gr_mem string pointers */
-               if ((gent->gr_mem = (char **) malloc((num+1) * sizeof(char *))) == NULL)
+               if ((gent->gr_mem = SMB_MALLOC_ARRAY(char *, num+1)) == NULL)
                        goto err;
 
                memset(gent->gr_mem, '\0', (num+1) * sizeof(char *));
 
                for (i=0; i < num; i++) {
-                       if ((gent->gr_mem[i] = strdup(grp->gr_mem[i])) == NULL)
+                       if ((gent->gr_mem[i] = SMB_STRDUP(grp->gr_mem[i])) == NULL)
                                goto err;
                }
                gent->gr_mem[num] = NULL;
                
                grp = getgrent();
                if (grp) {
-                       gent->next = (struct sys_grent *) malloc(sizeof(struct sys_grent));
+                       gent->next = SMB_MALLOC_P(struct sys_grent);
                        if (gent->next == NULL)
                                goto err;
                        gent = gent->next;
@@ -134,7 +134,7 @@ struct sys_pwent * getpwent_list(void)
        struct sys_pwent *pent;
        struct passwd *pwd;
        
-       pent = (struct sys_pwent *) malloc(sizeof(struct sys_pwent));
+       pent = SMB_MALLOC_P(struct sys_pwent);
        if (pent == NULL) {
                DEBUG (0, ("Out of memory in getpwent_list!\n"));
                return NULL;
@@ -146,31 +146,31 @@ struct sys_pwent * getpwent_list(void)
        while (pwd != NULL) {
                memset(pent, '\0', sizeof(struct sys_pwent));
                if (pwd->pw_name) {
-                       if ((pent->pw_name = strdup(pwd->pw_name)) == NULL)
+                       if ((pent->pw_name = SMB_STRDUP(pwd->pw_name)) == NULL)
                                goto err;
                }
                if (pwd->pw_passwd) {
-                       if ((pent->pw_passwd = strdup(pwd->pw_passwd)) == NULL)
+                       if ((pent->pw_passwd = SMB_STRDUP(pwd->pw_passwd)) == NULL)
                                goto err;
                }
                pent->pw_uid = pwd->pw_uid;
                pent->pw_gid = pwd->pw_gid;
                if (pwd->pw_gecos) {
-                       if ((pent->pw_gecos = strdup(pwd->pw_gecos)) == NULL)
+                       if ((pent->pw_gecos = SMB_STRDUP(pwd->pw_gecos)) == NULL)
                                goto err;
                }
                if (pwd->pw_dir) {
-                       if ((pent->pw_dir = strdup(pwd->pw_dir)) == NULL)
+                       if ((pent->pw_dir = SMB_STRDUP(pwd->pw_dir)) == NULL)
                                goto err;
                }
                if (pwd->pw_shell) {
-                       if ((pent->pw_shell = strdup(pwd->pw_shell)) == NULL)
+                       if ((pent->pw_shell = SMB_STRDUP(pwd->pw_shell)) == NULL)
                                goto err;
                }
 
                pwd = getpwent();
                if (pwd) {
-                       pent->next = (struct sys_pwent *) malloc(sizeof(struct sys_pwent));
+                       pent->next = SMB_MALLOC_P(struct sys_pwent);
                        if (pent->next == NULL)
                                goto err;
                        pent = pent->next;
@@ -223,12 +223,12 @@ static struct sys_userlist *add_members_to_userlist(struct sys_userlist *list_he
                ;
 
        for (i = 0; i < num_users; i++) {
-               struct sys_userlist *entry = (struct sys_userlist *)malloc(sizeof(*entry));
+               struct sys_userlist *entry = SMB_MALLOC_P(struct sys_userlist);
                if (entry == NULL) {
                        free_userlist(list_head);
                        return NULL;
                }
-               entry->unix_name = (char *)strdup(grp->gr_mem[i]);
+               entry->unix_name = (char *)SMB_STRDUP(grp->gr_mem[i]);
                if (entry->unix_name == NULL) {
                        SAFE_FREE(entry);
                        free_userlist(list_head);
index e102f2ef81844246c3ea8416f64f9d034b69e82d..0d7ffe09e9bc343a8b6358a9868d380e8c532a53 100644 (file)
@@ -24,7 +24,7 @@
 
 static struct passwd *alloc_copy_passwd(const struct passwd *from) 
 {
-       struct passwd *ret = smb_xmalloc(sizeof(struct passwd));
+       struct passwd *ret = SMB_XMALLOC_P(struct passwd);
        ZERO_STRUCTP(ret);
        ret->pw_name = smb_xstrdup(from->pw_name);
        ret->pw_passwd = smb_xstrdup(from->pw_passwd);
index 6b27fc84ddb31604dcb73b78ba1b996e0db28c21..197157a2f72356dec98befa84b48e14ba87e6adf 100644 (file)
@@ -304,7 +304,7 @@ BOOL string_to_sid(DOM_SID *sidout, const char *sidstr)
 
        memset((char *)sidout, '\0', sizeof(DOM_SID));
 
-       p = q = strdup(sidstr + 2);
+       p = q = SMB_STRDUP(sidstr + 2);
        if (p == NULL) {
                DEBUG(0, ("string_to_sid: out of memory!\n"));
                return False;
@@ -621,7 +621,7 @@ char *sid_binstring(const DOM_SID *sid)
 {
        char *buf, *s;
        int len = sid_size(sid);
-       buf = malloc(len);
+       buf = SMB_MALLOC(len);
        if (!buf)
                return NULL;
        sid_linearize(buf, len, sid);
@@ -641,7 +641,7 @@ DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, const DOM_SID *src)
        if(!src)
                return NULL;
        
-       if((dst = talloc_zero(ctx, sizeof(DOM_SID))) != NULL) {
+       if((dst = TALLOC_ZERO_P(ctx, DOM_SID)) != NULL) {
                sid_copy( dst, src);
        }
        
index 27a7551e3713f7cf40589246faa1e7f7d7f92d93..c09e4579c4d5468c3bca7afba05c29fc7a508a24 100644 (file)
@@ -818,7 +818,7 @@ BOOL open_any_socket_out(struct sockaddr_in *addrs, int num_addrs,
 
        timeout *= 1000;        /* convert to microseconds */
 
-       sockets = malloc(num_addrs * sizeof(*sockets));
+       sockets = SMB_MALLOC_ARRAY(int, num_addrs);
 
        if (sockets == NULL)
                return False;
index a758aece4cace7973a992a120b296fa242ba605e..c6b6570f5c436314d7f6962dd14af6261669fe82 100644 (file)
@@ -134,7 +134,7 @@ char **toktocliplist(int *ctok, const char *sep)
        *ctok=ictok;
        s=(char *)last_ptr;
        
-       if (!(ret=iret=malloc((ictok+1)*sizeof(char *))))
+       if (!(ret=iret=SMB_MALLOC_ARRAY(char *,ictok+1)))
                return NULL;
        
        while(ictok--) {    
@@ -815,7 +815,7 @@ void hex_encode(const unsigned char *buff_in, size_t len, char **out_hex_buffer)
        int i;
        char *hex_buffer;
 
-       *out_hex_buffer = smb_xmalloc((len*2)+1);
+       *out_hex_buffer = SMB_XMALLOC_ARRAY(char, (len*2)+1);
        hex_buffer = *out_hex_buffer;
 
        for (i = 0; i < len; i++)
@@ -863,7 +863,7 @@ static BOOL string_init(char **dest,const char *src)
 
        if (l == 0) {
                if (!null_string) {
-                       if((null_string = (char *)malloc(1)) == NULL) {
+                       if((null_string = (char *)SMB_MALLOC(1)) == NULL) {
                                DEBUG(0,("string_init: malloc fail for null_string.\n"));
                                return False;
                        }
@@ -871,7 +871,7 @@ static BOOL string_init(char **dest,const char *src)
                }
                *dest = null_string;
        } else {
-               (*dest) = strdup(src);
+               (*dest) = SMB_STRDUP(src);
                if ((*dest) == NULL) {
                        DEBUG(0,("Out of memory in string_init\n"));
                        return False;
@@ -990,7 +990,7 @@ char *realloc_string_sub(char *string, const char *pattern, const char *insert)
 
        s = string;
 
-       in = strdup(insert);
+       in = SMB_STRDUP(insert);
        if (!in) {
                DEBUG(0, ("realloc_string_sub: out of memory!\n"));
                return NULL;
@@ -1019,7 +1019,7 @@ char *realloc_string_sub(char *string, const char *pattern, const char *insert)
        while ((p = strstr_m(s,pattern))) {
                if (ld > 0) {
                        int offset = PTR_DIFF(s,string);
-                       char *t = Realloc(string, ls + ld + 1);
+                       char *t = SMB_REALLOC(string, ls + ld + 1);
                        if (!t) {
                                DEBUG(0, ("realloc_string_sub: out of memory!\n"));
                                SAFE_FREE(in);
@@ -1110,7 +1110,7 @@ static smb_ucs2_t *all_string_sub_w(const smb_ucs2_t *s, const smb_ucs2_t *patte
                }
        }
 
-       r = rp = (smb_ucs2_t *)malloc((lt + 1)*(sizeof(smb_ucs2_t)));
+       r = rp = SMB_MALLOC_ARRAY(smb_ucs2_t, lt + 1);
        if (!r) {
                DEBUG(0, ("all_string_sub_w: out of memory!\n"));
                return NULL;
@@ -1478,7 +1478,7 @@ char *binary_string(char *buf, int len)
        char *s;
        int i, j;
        const char *hex = "0123456789ABCDEF";
-       s = malloc(len * 3 + 1);
+       s = SMB_MALLOC(len * 3 + 1);
        if (!s)
                return NULL;
        for (j=i=0;i<len;i++) {
@@ -1533,7 +1533,7 @@ int fstr_sprintf(fstring s, const char *fmt, ...)
        char *ret;
        
        n = strnlen(s, n);
-       ret = malloc(n+1);
+       ret = SMB_MALLOC(n+1);
        if (!ret)
                return NULL;
        memcpy(ret, s, n);
@@ -1573,7 +1573,7 @@ char **str_list_make(const char *string, const char *sep)
        
        if (!string || !*string)
                return NULL;
-       s = strdup(string);
+       s = SMB_STRDUP(string);
        if (!s) {
                DEBUG(0,("str_list_make: Unable to allocate memory"));
                return NULL;
@@ -1587,7 +1587,7 @@ char **str_list_make(const char *string, const char *sep)
        while (next_token(&str, tok, sep, sizeof(tok))) {               
                if (num == lsize) {
                        lsize += S_LIST_ABS;
-                       rlist = (char **)Realloc(list, ((sizeof(char **)) * (lsize +1)));
+                       rlist = SMB_REALLOC_ARRAY(list, char *, lsize +1);
                        if (!rlist) {
                                DEBUG(0,("str_list_make: Unable to allocate memory"));
                                str_list_free(&list);
@@ -1598,7 +1598,7 @@ char **str_list_make(const char *string, const char *sep)
                        memset (&list[num], 0, ((sizeof(char**)) * (S_LIST_ABS +1)));
                }
                
-               list[num] = strdup(tok);
+               list[num] = SMB_STRDUP(tok);
                if (!list[num]) {
                        DEBUG(0,("str_list_make: Unable to allocate memory"));
                        str_list_free(&list);
@@ -1628,7 +1628,7 @@ BOOL str_list_copy(char ***dest, const char **src)
        while (src[num]) {
                if (num == lsize) {
                        lsize += S_LIST_ABS;
-                       rlist = (char **)Realloc(list, ((sizeof(char **)) * (lsize +1)));
+                       rlist = SMB_REALLOC_ARRAY(list, char *, lsize +1);
                        if (!rlist) {
                                DEBUG(0,("str_list_copy: Unable to re-allocate memory"));
                                str_list_free(&list);
@@ -1638,7 +1638,7 @@ BOOL str_list_copy(char ***dest, const char **src)
                        memset (&list[num], 0, ((sizeof(char **)) * (S_LIST_ABS +1)));
                }
                
-               list[num] = strdup(src[num]);
+               list[num] = SMB_STRDUP(src[num]);
                if (!list[num]) {
                        DEBUG(0,("str_list_copy: Unable to allocate memory"));
                        str_list_free(&list);
@@ -1740,7 +1740,7 @@ BOOL str_list_substitute(char **list, const char *pattern, const char *insert)
                        t = *list;
                        d = p -t;
                        if (ld) {
-                               t = (char *) malloc(ls +ld +1);
+                               t = (char *) SMB_MALLOC(ls +ld +1);
                                if (!t) {
                                        DEBUG(0,("str_list_substitute: Unable to allocate memory"));
                                        return False;
@@ -1863,7 +1863,7 @@ int ipstr_list_parse(const char* ipstr_list, struct ip_service **ip_list)
                return 0;
        
        count = count_chars(ipstr_list, IPSTR_LIST_CHAR) + 1;
-       if ( (*ip_list = (struct ip_service*)malloc(count * sizeof(struct ip_service))) == NULL ) {
+       if ( (*ip_list = SMB_MALLOC_ARRAY(struct ip_service, count)) == NULL ) {
                DEBUG(0,("ipstr_list_parse: malloc failed for %lu entries\n", (unsigned long)count));
                return 0;
        }
@@ -2011,7 +2011,7 @@ char * base64_encode_data_blob(DATA_BLOB data)
        size_t out_cnt = 0;
        size_t len = data.length;
        size_t output_len = data.length * 2;
-       char *result = malloc(output_len); /* get us plenty of space */
+       char *result = SMB_MALLOC(output_len); /* get us plenty of space */
 
        while (len-- && out_cnt < (data.length * 2) - 5) {
                int c = (unsigned char) *(data.data++);
@@ -2072,11 +2072,11 @@ void string_append(char **left, const char *right)
        int new_len = strlen(right) + 1;
 
        if (*left == NULL) {
-               *left = malloc(new_len);
+               *left = SMB_MALLOC(new_len);
                *left[0] = '\0';
        } else {
                new_len += strlen(*left);
-               *left = Realloc(*left, new_len);
+               *left = SMB_REALLOC(*left, new_len);
        }
 
        if (*left == NULL)
index 997dde91c22e988e1267c6f38593203f6906400f..bb9d69b164d2b00aafeb0bda7abc2cbd21cecf6e 100644 (file)
@@ -61,7 +61,7 @@ void load_case_tables(void)
           not available */
        if (!upcase_table) {
                DEBUG(1,("creating lame upcase table\n"));
-               upcase_table = malloc(0x20000);
+               upcase_table = SMB_MALLOC(0x20000);
                for (i=0;i<0x10000;i++) {
                        smb_ucs2_t v;
                        SSVAL(&v, 0, i);
@@ -76,7 +76,7 @@ void load_case_tables(void)
 
        if (!lowcase_table) {
                DEBUG(1,("creating lame lowcase table\n"));
-               lowcase_table = malloc(0x20000);
+               lowcase_table = SMB_MALLOC(0x20000);
                for (i=0;i<0x10000;i++) {
                        smb_ucs2_t v;
                        SSVAL(&v, 0, i);
@@ -175,7 +175,7 @@ void init_valid_table(void)
        if (valid_table) free(valid_table);
 
        DEBUG(2,("creating default valid table\n"));
-       valid_table = malloc(0x10000);
+       valid_table = SMB_MALLOC(0x10000);
        for (i=0;i<128;i++)
                valid_table[i] = isalnum(i) || strchr(allowed,i);
        
@@ -302,7 +302,7 @@ char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str)
        char *s;
        int maxlen = (str->uni_str_len+1)*4;
        if (!str->buffer) return NULL;
-       s = (char *)talloc(ctx, maxlen); /* convervative */
+       s = (char *)TALLOC(ctx, maxlen); /* convervative */
        if (!s) return NULL;
        pull_ucs2(NULL, s, str->buffer, maxlen, str->uni_str_len*2, 
                  STR_NOALIGN);
@@ -586,7 +586,7 @@ smb_ucs2_t *strndup_w(const smb_ucs2_t *src, size_t len)
        smb_ucs2_t *dest;
        
        if (!len) len = strlen_w(src);
-       dest = (smb_ucs2_t *)malloc((len + 1) * sizeof(smb_ucs2_t));
+       dest = SMB_MALLOC_ARRAY(smb_ucs2_t, len + 1);
        if (!dest) {
                DEBUG(0,("strdup_w: out of memory!\n"));
                return NULL;
@@ -815,12 +815,12 @@ UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src)
        
        /* allocate UNISTR2 destination if not given */
        if (!dst) {
-               dst = (UNISTR2*) talloc(ctx, sizeof(UNISTR2));
+               dst = TALLOC_P(ctx, UNISTR2);
                if (!dst)
                        return NULL;
        }
        if (!dst->buffer) {
-               dst->buffer = (uint16*) talloc(ctx, sizeof(uint16) * (len + 1));
+               dst->buffer = TALLOC_ARRAY(ctx, uint16, len + 1);
                if (!dst->buffer)
                        return NULL;
        }
index 4a54762fde74578d2432d44b6a77c7b87eb13052..b82e04e13ccea6b6ea2f2c7b6e840cc147cd7d7e 100644 (file)
@@ -72,8 +72,8 @@ static char *wins_srv_keystr(struct in_addr wins_ip, struct in_addr src_ip)
 {
        char *keystr = NULL, *wins_ip_addr = NULL, *src_ip_addr = NULL;
 
-       wins_ip_addr = strdup(inet_ntoa(wins_ip));
-       src_ip_addr = strdup(inet_ntoa(src_ip));
+       wins_ip_addr = SMB_STRDUP(inet_ntoa(wins_ip));
+       src_ip_addr = SMB_STRDUP(inet_ntoa(src_ip));
 
        if ( !wins_ip_addr || !src_ip_addr ) {
                DEBUG(0,("wins_srv_keystr: malloc error\n"));
@@ -212,9 +212,9 @@ char **wins_srv_tags(void)
        if (lp_wins_support()) {
                /* give the caller something to chew on. This makes
                   the rest of the logic simpler (ie. less special cases) */
-               ret = (char **)malloc(sizeof(char *)*2);
+               ret = SMB_MALLOC_ARRAY(char *, 2);
                if (!ret) return NULL;
-               ret[0] = strdup("*");
+               ret[0] = SMB_STRDUP("*");
                ret[1] = NULL;
                return ret;
        }
@@ -242,8 +242,8 @@ char **wins_srv_tags(void)
                }
 
                /* add it to the list */
-               ret = (char **)Realloc(ret, (count+2) * sizeof(char *));
-               ret[count] = strdup(t_ip.tag);
+               ret = SMB_REALLOC_ARRAY(ret, char *, count+2);
+               ret[count] = SMB_STRDUP(t_ip.tag);
                if (!ret[count]) break;
                count++;
        }
index da5ec126c1f9b94db09549eebe72e59b294424f2..5bb93179af35f96857bf163fe7770a892bddf17e 100644 (file)
@@ -80,7 +80,7 @@ static int x_allocate_buffer(XFILE *f)
 {
        if (f->buf) return 1;
        if (f->bufsize == 0) return 0;
-       f->buf = malloc(f->bufsize);
+       f->buf = SMB_MALLOC(f->bufsize);
        if (!f->buf) return 0;
        f->next = f->buf;
        return 1;
@@ -95,7 +95,7 @@ XFILE *x_fopen(const char *fname, int flags, mode_t mode)
 {
        XFILE *ret;
 
-       ret = (XFILE *)malloc(sizeof(XFILE));
+       ret = SMB_MALLOC_P(XFILE);
        if (!ret) return NULL;
 
        memset(ret, 0, sizeof(XFILE));
index 92f37093f460d1cbcf6df49ab077e1c7e34bc8e6..e8546f86f50c7f51efb65c0d76c0a922cc71649f 100644 (file)
@@ -31,7 +31,7 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
        char *ret;
        int len;
        
-       r = strdup(realm);
+       r = SMB_STRDUP(realm);
 
        if (!r || !*r)
                return r;
@@ -42,7 +42,7 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
 
        len = (numbits+1)*(strlen(field)+1) + strlen(r) + 1;
 
-       ret = malloc(len);
+       ret = SMB_MALLOC(len);
        if (!ret)
                return NULL;
 
@@ -87,12 +87,12 @@ ADS_STRUCT *ads_init(const char *realm,
 {
        ADS_STRUCT *ads;
        
-       ads = (ADS_STRUCT *)smb_xmalloc(sizeof(*ads));
+       ads = SMB_XMALLOC_P(ADS_STRUCT);
        ZERO_STRUCTP(ads);
        
-       ads->server.realm = realm? strdup(realm) : NULL;
-       ads->server.workgroup = workgroup ? strdup(workgroup) : NULL;
-       ads->server.ldap_server = ldap_server? strdup(ldap_server) : NULL;
+       ads->server.realm = realm? SMB_STRDUP(realm) : NULL;
+       ads->server.workgroup = workgroup ? SMB_STRDUP(workgroup) : NULL;
+       ads->server.ldap_server = ldap_server? SMB_STRDUP(ldap_server) : NULL;
 
        /* we need to know if this is a foreign realm */
        if (realm && *realm && !strequal(lp_realm(), realm)) {
index 29170af377e00de50e88df04334d570accf73b39..ccaf82124c66eaeba0d023e01807030d0a0731df 100644 (file)
@@ -59,7 +59,7 @@ static BOOL pac_io_unknown_type_10(const char *desc, UNKNOWN_TYPE_10 *type_10,
                return False;
 
        if (UNMARSHALLING(ps) && type_10->len) {
-               type_10->username = (uint16 *) prs_alloc_mem(ps, type_10->len);
+               type_10->username = PRS_ALLOC_MEM(ps, uint16, type_10->len);
                if (!type_10->username) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -85,8 +85,7 @@ static BOOL pac_io_krb_sids(const char *desc, KRB_SID_AND_ATTRS *sid_and_attr,
        depth++;
 
        if (UNMARSHALLING(ps)) {
-               sid_and_attr->sid = 
-                       (DOM_SID2 * ) prs_alloc_mem(ps, sizeof(DOM_SID2));
+               sid_and_attr->sid = PRS_ALLOC_MEM(ps, DOM_SID2, 1);
                if (!sid_and_attr->sid) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -135,8 +134,7 @@ static BOOL pac_io_krb_sid_and_attr_array(const char *desc,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               array->krb_sid_and_attrs = (KRB_SID_AND_ATTRS *)
-                       prs_alloc_mem(ps, sizeof(KRB_SID_AND_ATTRS) * num);
+               array->krb_sid_and_attrs = PRS_ALLOC_MEM(ps, KRB_SID_AND_ATTRS, num);
                if (!array->krb_sid_and_attrs) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -199,8 +197,7 @@ static BOOL pac_io_group_membership_array(const char *desc,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               array->group_membership = (GROUP_MEMBERSHIP *)
-                       prs_alloc_mem(ps, sizeof(GROUP_MEMBERSHIP) * num);
+               array->group_membership = PRS_ALLOC_MEM(ps, GROUP_MEMBERSHIP, num);
                if (!array->group_membership) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -423,7 +420,7 @@ static BOOL pac_io_pac_signature_data(const char *desc,
        if (!prs_uint32("type", ps, depth, &data->type))
                return False;
        if (UNMARSHALLING(ps)) {
-               data->signature = (unsigned char *)prs_alloc_mem(ps, siglen);
+               data->signature = PRS_ALLOC_MEM(ps, unsigned char, siglen);
                if (!data->signature) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -454,8 +451,7 @@ static BOOL pac_io_pac_info_hdr_ctr(const char *desc, PAC_INFO_HDR *hdr,
        }
 
        if (UNMARSHALLING(ps) && hdr->size > 0) {
-               hdr->ctr = (PAC_INFO_CTR *) 
-                       prs_alloc_mem(ps, sizeof(PAC_INFO_CTR));
+               hdr->ctr = PRS_ALLOC_MEM(ps, PAC_INFO_CTR, 1);
                if (!hdr->ctr) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -466,8 +462,7 @@ static BOOL pac_io_pac_info_hdr_ctr(const char *desc, PAC_INFO_HDR *hdr,
        case PAC_TYPE_LOGON_INFO:
                DEBUG(5, ("PAC_TYPE_LOGON_INFO\n"));
                if (UNMARSHALLING(ps))
-                       hdr->ctr->pac.logon_info = (PAC_LOGON_INFO *)
-                               prs_alloc_mem(ps, sizeof(PAC_LOGON_INFO));
+                       hdr->ctr->pac.logon_info = PRS_ALLOC_MEM(ps, PAC_LOGON_INFO, 1);
                if (!hdr->ctr->pac.logon_info) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -480,8 +475,7 @@ static BOOL pac_io_pac_info_hdr_ctr(const char *desc, PAC_INFO_HDR *hdr,
        case PAC_TYPE_SERVER_CHECKSUM:
                DEBUG(5, ("PAC_TYPE_SERVER_CHECKSUM\n"));
                if (UNMARSHALLING(ps))
-                       hdr->ctr->pac.srv_cksum = (PAC_SIGNATURE_DATA *)
-                               prs_alloc_mem(ps, sizeof(PAC_SIGNATURE_DATA));
+                       hdr->ctr->pac.srv_cksum = PRS_ALLOC_MEM(ps, PAC_SIGNATURE_DATA, 1);
                if (!hdr->ctr->pac.srv_cksum) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -494,8 +488,7 @@ static BOOL pac_io_pac_info_hdr_ctr(const char *desc, PAC_INFO_HDR *hdr,
        case PAC_TYPE_PRIVSVR_CHECKSUM:
                DEBUG(5, ("PAC_TYPE_PRIVSVR_CHECKSUM\n"));
                if (UNMARSHALLING(ps))
-                       hdr->ctr->pac.privsrv_cksum = (PAC_SIGNATURE_DATA *)
-                               prs_alloc_mem(ps, sizeof(PAC_SIGNATURE_DATA));
+                       hdr->ctr->pac.privsrv_cksum = PRS_ALLOC_MEM(ps, PAC_SIGNATURE_DATA, 1);
                if (!hdr->ctr->pac.privsrv_cksum) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -509,8 +502,7 @@ static BOOL pac_io_pac_info_hdr_ctr(const char *desc, PAC_INFO_HDR *hdr,
        case PAC_TYPE_UNKNOWN_10:
                DEBUG(5, ("PAC_TYPE_UNKNOWN_10\n"));
                if (UNMARSHALLING(ps))
-                       hdr->ctr->pac.type_10 = (UNKNOWN_TYPE_10 *)
-                               prs_alloc_mem(ps, sizeof(UNKNOWN_TYPE_10));
+                       hdr->ctr->pac.type_10 = PRS_ALLOC_MEM(ps, UNKNOWN_TYPE_10, 1);
                if (!hdr->ctr->pac.type_10) {
                        DEBUG(3, ("No memory available\n"));
                        return False;
@@ -571,9 +563,7 @@ static BOOL pac_io_pac_data(const char *desc, PAC_DATA *data,
                return False;
 
        if (UNMARSHALLING(ps) && data->num_buffers > 0) {
-               if ((data->pac_info_hdr_ptr = (PAC_INFO_HDR *) 
-                    prs_alloc_mem(ps, sizeof(PAC_INFO_HDR) * 
-                                  data->num_buffers)) == NULL) {
+               if ((data->pac_info_hdr_ptr = PRS_ALLOC_MEM(ps, PAC_INFO_HDR, data->num_buffers)) == NULL) {
                        return False;
                }
        }
@@ -606,7 +596,7 @@ PAC_DATA *decode_pac_data(DATA_BLOB *auth_data, TALLOC_CTX *ctx)
 
        data_blob_free(&pac_data_blob);
 
-       pac_data = (PAC_DATA *) talloc_zero(ctx, sizeof(PAC_DATA));
+       pac_data = TALLOC_ZERO_P(ctx, PAC_DATA);
        pac_io_pac_data("pac data", pac_data, &ps, 0);
 
        prs_mem_free(&ps);
index ec6a8c507809f460d51fd0b67fefd75522c45746..8475f70ec474f0600f1d6acafa72342d917dae58 100644 (file)
@@ -546,7 +546,7 @@ int ads_keytab_create_default(ADS_STRUCT *ads)
        if (!found) {
                goto done;
        }
-       oldEntries = (char **) malloc(found * sizeof(char *));
+       oldEntries = SMB_MALLOC_ARRAY(char *, found );
        if (!oldEntries) {
                DEBUG(1,("ads_keytab_create_default: Failed to allocate space to store the old keytab entries (malloc failed?).\n"));
                ret = -1;
index 848bd61accf7accac030dfcd23abbd2a22abe91c..f7cbe8674bbfc070c6c10f36971f0c0eb226c7cb 100644 (file)
@@ -174,7 +174,7 @@ static BOOL ads_secrets_verify_ticket(krb5_context context, krb5_auth_context au
        for (i=0;enctypes[i];i++) {
                krb5_keyblock *key = NULL;
 
-               if (!(key = (krb5_keyblock *)malloc(sizeof(*key)))) {
+               if (!(key = SMB_MALLOC_P(krb5_keyblock))) {
                        goto out;
                }
        
index 95825748514e12f194383c50dbf022544eafed08..dadce2593c85262aca7550fb5309cb8bf19c629b 100644 (file)
@@ -54,7 +54,7 @@ static DATA_BLOB encode_krb5_setpw(const char *principal, const char *password)
        DATA_BLOB ret;
 
 
-       princ = strdup(principal);
+       princ = SMB_STRDUP(principal);
 
        if ((c = strchr_m(princ, '/')) == NULL) {
            c = princ; 
@@ -156,7 +156,7 @@ static krb5_error_code build_kpasswd_request(uint16 pversion,
                return ret;
        }
 
-       packet->data = (char *)malloc(ap_req->length + cipherpw.length + 6);
+       packet->data = (char *)SMB_MALLOC(ap_req->length + cipherpw.length + 6);
        if (!packet->data)
                return -1;
 
@@ -407,7 +407,7 @@ static ADS_STATUS do_krb5_kpasswd_request(krb5_context context,
        free(chpw_req.data);
 
        chpw_rep.length = 1500;
-       chpw_rep.data = (char *) malloc(chpw_rep.length);
+       chpw_rep.data = (char *) SMB_MALLOC(chpw_rep.length);
        if (!chpw_rep.data) {
                close(sock);
                free(ap_req.data);
@@ -631,7 +631,7 @@ static ADS_STATUS ads_krb5_chg_password(const char *kdc_host,
     /* We have to obtain an INITIAL changepw ticket for changing password */
     asprintf(&chpw_princ, "kadmin/changepw@%s",
                                (char *) krb5_princ_realm(context, princ));
-    password = strdup(oldpw);
+    password = SMB_STRDUP(oldpw);
     ret = krb5_get_init_creds_password(context, &creds, princ, password,
                                           kerb_prompter, NULL, 
                                           0, chpw_princ, &opts);
index 7bddc0e9b517cd9d7579eca214ff30f86b875879..c18e253f7b2e463dbf49a78d3554770fbd045761 100644 (file)
@@ -119,7 +119,7 @@ static BOOL ads_try_connect(ADS_STRUCT *ads, const char *server, unsigned port)
        DEBUG(5,("ads_try_connect: trying ldap server '%s' port %u\n", server, port));
 
        /* this copes with inet_ntoa brokenness */
-       srv = strdup(server);
+       srv = SMB_STRDUP(server);
 
        ads->ld = ldap_open_with_timeout(srv, port, lp_ldap_timeout());
        if (!ads->ld) {
@@ -296,11 +296,11 @@ got_connection:
        }
 
        if (!ads->auth.realm) {
-               ads->auth.realm = strdup(ads->config.realm);
+               ads->auth.realm = SMB_STRDUP(ads->config.realm);
        }
 
        if (!ads->auth.kdc_server) {
-               ads->auth.kdc_server = strdup(inet_ntoa(ads->ldap_ip));
+               ads->auth.kdc_server = SMB_STRDUP(inet_ntoa(ads->ldap_ip));
        }
 
 #if KRB5_DNS_HACK
@@ -338,13 +338,13 @@ static struct berval *dup_berval(TALLOC_CTX *ctx, const struct berval *in_val)
 
        if (!in_val) return NULL;
 
-       value = talloc_zero(ctx, sizeof(struct berval));
+       value = TALLOC_ZERO_P(ctx, struct berval);
        if (value == NULL)
                return NULL;
        if (in_val->bv_len == 0) return value;
 
        value->bv_len = in_val->bv_len;
-       value->bv_val = talloc_memdup(ctx, in_val->bv_val, in_val->bv_len);
+       value->bv_val = TALLOC_MEMDUP(ctx, in_val->bv_val, in_val->bv_len);
        return value;
 }
 
@@ -358,9 +358,9 @@ static struct berval **ads_dup_values(TALLOC_CTX *ctx,
        int i;
        
        if (!in_vals) return NULL;
-       for (i=0; in_vals[i]; i++); /* count values */
-       values = (struct berval **) talloc_zero(ctx, 
-                                               (i+1)*sizeof(struct berval *));
+       for (i=0; in_vals[i]; i++)
+               ; /* count values */
+       values = TALLOC_ZERO_ARRAY(ctx, struct berval *, i+1);
        if (!values) return NULL;
 
        for (i=0; in_vals[i]; i++) {
@@ -378,8 +378,9 @@ static char **ads_push_strvals(TALLOC_CTX *ctx, const char **in_vals)
        int i;
        
        if (!in_vals) return NULL;
-       for (i=0; in_vals[i]; i++); /* count values */
-       values = (char ** ) talloc_zero(ctx, (i+1)*sizeof(char *));
+       for (i=0; in_vals[i]; i++)
+               ; /* count values */
+       values = TALLOC_ZERO_ARRAY(ctx, char *, i+1);
        if (!values) return NULL;
 
        for (i=0; in_vals[i]; i++) {
@@ -397,8 +398,9 @@ static char **ads_pull_strvals(TALLOC_CTX *ctx, const char **in_vals)
        int i;
        
        if (!in_vals) return NULL;
-       for (i=0; in_vals[i]; i++); /* count values */
-       values = (char **) talloc_zero(ctx, (i+1)*sizeof(char *));
+       for (i=0; in_vals[i]; i++)
+               ; /* count values */
+       values = TALLOC_ZERO_ARRAY(ctx, char *, i+1);
        if (!values) return NULL;
 
        for (i=0; in_vals[i]; i++) {
@@ -824,8 +826,7 @@ ADS_MODLIST ads_init_mods(TALLOC_CTX *ctx)
 #define ADS_MODLIST_ALLOC_SIZE 10
        LDAPMod **mods;
        
-       if ((mods = (LDAPMod **) talloc_zero(ctx, sizeof(LDAPMod *) * 
-                                            (ADS_MODLIST_ALLOC_SIZE + 1))))
+       if ((mods = TALLOC_ZERO_ARRAY(ctx, LDAPMod *, ADS_MODLIST_ALLOC_SIZE + 1)))
                /* -1 is safety to make sure we don't go over the end.
                   need to reset it to NULL before doing ldap modify */
                mods[ADS_MODLIST_ALLOC_SIZE] = (LDAPMod *) -1;
@@ -861,8 +862,8 @@ static ADS_STATUS ads_modlist_add(TALLOC_CTX *ctx, ADS_MODLIST *mods,
        for (curmod=0; modlist[curmod] && modlist[curmod] != (LDAPMod *) -1;
             curmod++);
        if (modlist[curmod] == (LDAPMod *) -1) {
-               if (!(modlist = talloc_realloc(ctx, modlist, 
-                       (curmod+ADS_MODLIST_ALLOC_SIZE+1)*sizeof(LDAPMod *))))
+               if (!(modlist = TALLOC_REALLOC_ARRAY(ctx, modlist, LDAPMod *,
+                               curmod+ADS_MODLIST_ALLOC_SIZE+1)))
                        return ADS_ERROR(LDAP_NO_MEMORY);
                memset(&modlist[curmod], 0, 
                       ADS_MODLIST_ALLOC_SIZE*sizeof(LDAPMod *));
@@ -870,7 +871,7 @@ static ADS_STATUS ads_modlist_add(TALLOC_CTX *ctx, ADS_MODLIST *mods,
                *mods = modlist;
        }
                
-       if (!(modlist[curmod] = talloc_zero(ctx, sizeof(LDAPMod))))
+       if (!(modlist[curmod] = TALLOC_ZERO_P(ctx, LDAPMod)))
                return ADS_ERROR(LDAP_NO_MEMORY);
        modlist[curmod]->mod_type = talloc_strdup(ctx, name);
        if (mod_op & LDAP_MOD_BVALUES) {
@@ -1046,11 +1047,11 @@ char *ads_ou_string(ADS_STRUCT *ads, const char *org_unit)
                ret = ads_default_ou_string(ads, WELL_KNOWN_GUID_COMPUTERS);
 
                /* samba4 might not yet respond to a wellknownobject-query */
-               return ret ? ret : strdup("cn=Computers");
+               return ret ? ret : SMB_STRDUP("cn=Computers");
        }
        
        if (strequal(org_unit, "Computers")) {
-               return strdup("cn=Computers");
+               return SMB_STRDUP("cn=Computers");
        }
 
        return ads_build_path(org_unit, "\\/", "ou=", 1);
@@ -1107,7 +1108,7 @@ char *ads_default_ou_string(ADS_STRUCT *ads, const char *wknguid)
        for (i=1; i < new_ln; i++) {
                char *s;
                asprintf(&s, "%s,%s", ret, wkn_dn_exp[i]);
-               ret = strdup(s);
+               ret = SMB_STRDUP(s);
                free(s);
        }
 
@@ -1741,7 +1742,7 @@ ADS_STATUS ads_join_realm(ADS_STRUCT *ads, const char *machine_name,
        char *machine;
 
        /* machine name must be lowercase */
-       machine = strdup(machine_name);
+       machine = SMB_STRDUP(machine_name);
        strlower_m(machine);
 
        /*
@@ -1791,7 +1792,7 @@ ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname)
        int rc;
 
        /* hostname must be lowercase */
-       host = strdup(hostname);
+       host = SMB_STRDUP(hostname);
        strlower_m(host);
 
        status = ads_find_machine_acct(ads, &res, host);
@@ -1915,7 +1916,7 @@ ADS_STATUS ads_set_machine_sd(ADS_STRUCT *ads, const char *hostname, char *dn)
        if (!(mods = ads_init_mods(ctx))) return ADS_ERROR(LDAP_NO_MEMORY);
 
        bval.bv_len = prs_offset(&ps_wire);
-       bval.bv_val = talloc(ctx, bval.bv_len);
+       bval.bv_val = TALLOC(ctx, bval.bv_len);
        if (!bval.bv_val) {
                ret = ADS_ERROR(LDAP_NO_MEMORY);
                goto ads_set_sd_error;
@@ -2015,7 +2016,7 @@ char **ads_pull_strings(ADS_STRUCT *ads,
 
        *num_values = ldap_count_values(values);
 
-       ret = talloc(mem_ctx, sizeof(char *) * (*num_values+1));
+       ret = TALLOC_ARRAY(mem_ctx, char *, *num_values + 1);
        if (!ret) {
                ldap_value_free(values);
                return NULL;
@@ -2126,9 +2127,8 @@ char **ads_pull_strings_range(ADS_STRUCT *ads,
                return NULL;
        }
 
-       strings = talloc_realloc(mem_ctx, current_strings,
-                                sizeof(*current_strings) *
-                                (*num_strings + num_new_strings));
+       strings = TALLOC_REALLOC_ARRAY(mem_ctx, current_strings, char *,
+                                *num_strings + num_new_strings);
        
        if (strings == NULL) {
                ldap_memfree(range_attr);
@@ -2265,7 +2265,7 @@ int ads_pull_sids(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
        for (i=0; values[i]; i++)
                /* nop */ ;
 
-       (*sids) = talloc(mem_ctx, sizeof(DOM_SID) * i);
+       (*sids) = TALLOC_ARRAY(mem_ctx, DOM_SID, i);
        if (!(*sids)) {
                ldap_value_free_len(values);
                return 0;
@@ -2446,7 +2446,7 @@ ADS_STATUS ads_server_info(ADS_STRUCT *ads)
 
        SAFE_FREE(ads->config.ldap_server_name);
 
-       ads->config.ldap_server_name = strdup(p+1);
+       ads->config.ldap_server_name = SMB_STRDUP(p+1);
        p = strchr(ads->config.ldap_server_name, '$');
        if (!p || p[1] != '@') {
                talloc_destroy(ctx);
@@ -2461,7 +2461,7 @@ ADS_STATUS ads_server_info(ADS_STRUCT *ads)
        SAFE_FREE(ads->config.realm);
        SAFE_FREE(ads->config.bind_path);
 
-       ads->config.realm = strdup(p+2);
+       ads->config.realm = SMB_STRDUP(p+2);
        ads->config.bind_path = ads_build_dn(ads->config.realm);
 
        DEBUG(3,("got ldap server name %s@%s, using bind path: %s\n", 
index d8e4cefcfaa6fbce31b0afd40c26e1aa0c053cf4..68e6735891038a1de49a390e0cc6e8abb8189605 100644 (file)
@@ -161,10 +161,9 @@ static BOOL map_multi_sz(TALLOC_CTX *ctx, ADS_MODLIST *mods,
        };
 
        if (num_vals) {
-               str_values = talloc(ctx, 
-                                   (num_vals + 1) * sizeof(smb_ucs2_t *));
+               str_values = TALLOC_ARRAY(ctx, char *, num_vals + 1);
                memset(str_values, '\0', 
-                      (num_vals + 1) * sizeof(smb_ucs2_t *));
+                      (num_vals + 1) * sizeof(char *));
 
                cur_str = (smb_ucs2_t *) value->data_p;
                for (i=0; i < num_vals; i++)
index 991f16c84544791bd7baa03d16527f5fd438f5d2..03cdd339f0d25996d31263d0f33389c2f059a358 100644 (file)
@@ -42,7 +42,7 @@ ADS_STATUS ads_do_search_retry(ADS_STRUCT *ads, const char *bind_path, int scope
                return ADS_ERROR(LDAP_SERVER_DOWN);
        }
 
-       bp = strdup(bind_path);
+       bp = SMB_STRDUP(bind_path);
 
        if (!bp) {
                return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
index 8eb2c86bed5e1cac6565a792b2ae77df6e2356db..97ba9c92862792cab182505a0e1a43cc650f14e6 100644 (file)
@@ -374,7 +374,7 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
 
        gss_release_buffer(&minor_status, &output_token);
 
-       output_token.value = malloc(strlen(ads->config.bind_path) + 8);
+       output_token.value = SMB_MALLOC(strlen(ads->config.bind_path) + 8);
        p = output_token.value;
 
        *p++ = 1; /* no sign & seal selection */
index 2807b4e1d3e0e1d718be69456f46f7e9f25ba763..6db12fc6125d8d57e86bc2512cb8ad8167a0f90a 100644 (file)
@@ -32,7 +32,7 @@ BOOL asn1_write(ASN1_DATA *data, const void *p, int len)
        if (data->has_error) return False;
        if (data->length < data->ofs+len) {
                uint8 *newp;
-               newp = Realloc(data->data, data->ofs+len);
+               newp = SMB_REALLOC(data->data, data->ofs+len);
                if (!newp) {
                        SAFE_FREE(data->data);
                        data->has_error = True;
@@ -58,7 +58,7 @@ BOOL asn1_push_tag(ASN1_DATA *data, uint8 tag)
        struct nesting *nesting;
 
        asn1_write_uint8(data, tag);
-       nesting = (struct nesting *)malloc(sizeof(struct nesting));
+       nesting = SMB_MALLOC_P(struct nesting);
        if (!nesting) {
                data->has_error = True;
                return False;
@@ -255,7 +255,7 @@ BOOL asn1_start_tag(ASN1_DATA *data, uint8 tag)
                data->has_error = True;
                return False;
        }
-       nesting = (struct nesting *)malloc(sizeof(struct nesting));
+       nesting = SMB_MALLOC_P(struct nesting);
        if (!nesting) {
                data->has_error = True;
                return False;
@@ -350,7 +350,7 @@ BOOL asn1_read_OID(ASN1_DATA *data, char **OID)
 
        asn1_end_tag(data);
 
-       *OID = strdup(oid_str);
+       *OID = SMB_STRDUP(oid_str);
 
        return !data->has_error;
 }
@@ -380,7 +380,7 @@ BOOL asn1_read_GeneralString(ASN1_DATA *data, char **s)
                data->has_error = True;
                return False;
        }
-       *s = malloc(len+1);
+       *s = SMB_MALLOC(len+1);
        if (! *s) {
                data->has_error = True;
                return False;
index 974ebf91f5ce2004dc9a2ca74b95a9f471c736c6..682e0d8b85a92bd5b1c937dcd0f17c6029445917 100644 (file)
@@ -253,7 +253,7 @@ struct cli_state *cli_initialise(struct cli_state *cli)
        }
 
        if (!cli) {
-               cli = (struct cli_state *)malloc(sizeof(*cli));
+               cli = SMB_MALLOC_P(struct cli_state);
                if (!cli)
                        return NULL;
                ZERO_STRUCTP(cli);
@@ -275,8 +275,8 @@ struct cli_state *cli_initialise(struct cli_state *cli)
        cli->timeout = 20000; /* Timeout is in milliseconds. */
        cli->bufsize = CLI_BUFFER_SIZE+4;
        cli->max_xmit = cli->bufsize;
-       cli->outbuf = (char *)malloc(cli->bufsize+SAFETY_MARGIN);
-       cli->inbuf = (char *)malloc(cli->bufsize+SAFETY_MARGIN);
+       cli->outbuf = (char *)SMB_MALLOC(cli->bufsize+SAFETY_MARGIN);
+       cli->inbuf = (char *)SMB_MALLOC(cli->bufsize+SAFETY_MARGIN);
        cli->oplock_handler = cli_oplock_ack;
        cli->case_sensitive = False;
 
index 7816ed0fc6e57583baef3f229dbe37834df3286a..9d20ed3adcd268ca01629982c13b7bf3562aba5e 100644 (file)
@@ -1351,7 +1351,7 @@ int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path)
                pstring path2;
                clistr_pull(cli, path2, p, 
                            sizeof(path2), len, STR_ASCII);
-               *tmp_path = strdup(path2);
+               *tmp_path = SMB_STRDUP(path2);
        }
 
        return SVAL(cli->inbuf,smb_vwv0);
@@ -1402,7 +1402,7 @@ static BOOL cli_set_ea(struct cli_state *cli, uint16 setup, char *param, unsigne
        size_t ea_namelen = strlen(ea_name);
 
        data_len = 4 + 4 + ea_namelen + 1 + ea_len;
-       data = malloc(data_len);
+       data = SMB_MALLOC(data_len);
        if (!data) {
                return False;
        }
@@ -1558,7 +1558,7 @@ static BOOL cli_get_ea_list(struct cli_state *cli,
                goto out;
        }
 
-       ea_list = (struct ea_struct *)talloc(ctx, num_eas*sizeof(struct ea_struct));
+       ea_list = TALLOC_ARRAY(ctx, struct ea_struct, num_eas);
        if (!ea_list) {
                goto out;
        }
index ab157d48e963cad0e5be50482df18685950cdf74..8ab5854c8fb2ed6769fc99c20b5b80a781e2c278 100644 (file)
@@ -282,7 +282,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
                }
  
                /* and add them to the dirlist pool */
-               tdl = Realloc(dirlist,dirlist_len + data_len);
+               tdl = SMB_REALLOC(dirlist,dirlist_len + data_len);
 
                if (!tdl) {
                        DEBUG(0,("cli_list_new: Failed to expand dirlist\n"));
@@ -413,7 +413,7 @@ int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
 
                first = False;
 
-               tdl = Realloc(dirlist,(num_received + received)*DIR_STRUCT_SIZE);
+               tdl = SMB_REALLOC(dirlist,(num_received + received)*DIR_STRUCT_SIZE);
 
                if (!tdl) {
                        DEBUG(0,("cli_list_old: failed to expand dirlist"));
index af8b4422b78f8ceec5ffffe35c073b8c42c60580..25c36c214fc006ca29f4a0da92011491230f9fd8 100644 (file)
@@ -321,12 +321,12 @@ BOOL cli_list_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_LIST
                        goto cleanup;
                }
 
-               if ((tmp_list_ent=(SMB_NTQUOTA_LIST *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_LIST)))==NULL) {
+               if ((tmp_list_ent=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_LIST))==NULL) {
                        DEBUG(0,("talloc_zero() failed\n"));
                        return (-1);
                }
 
-               if ((tmp_list_ent->quotas=(SMB_NTQUOTA_STRUCT *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_STRUCT)))==NULL) {
+               if ((tmp_list_ent->quotas=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_STRUCT))==NULL) {
                        DEBUG(0,("talloc_zero() failed\n"));
                        return (-1);
                }
@@ -379,13 +379,13 @@ BOOL cli_list_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_LIST
                                goto cleanup;
                        }
 
-                       if ((tmp_list_ent=(SMB_NTQUOTA_LIST *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_LIST)))==NULL) {
+                       if ((tmp_list_ent=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_LIST))==NULL) {
                                DEBUG(0,("talloc_zero() failed\n"));
                                talloc_destroy(mem_ctx);
                                goto cleanup;
                        }
        
-                       if ((tmp_list_ent->quotas=(SMB_NTQUOTA_STRUCT *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_STRUCT)))==NULL) {
+                       if ((tmp_list_ent->quotas=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_STRUCT))==NULL) {
                                DEBUG(0,("talloc_zero() failed\n"));
                                talloc_destroy(mem_ctx);
                                goto cleanup;
index d1a23d36c8b0cc568f5afdba1312401492494a2b..3223098820486d2aac59a1ce5348fe8da466ba83 100644 (file)
@@ -256,8 +256,8 @@ static BOOL cli_issue_write(struct cli_state *cli, int fnum, off_t offset,
        BOOL bigoffset = False;
 
        if (size > cli->bufsize) {
-               cli->outbuf = realloc(cli->outbuf, size + 1024);
-               cli->inbuf = realloc(cli->inbuf, size + 1024);
+               cli->outbuf = SMB_REALLOC(cli->outbuf, size + 1024);
+               cli->inbuf = SMB_REALLOC(cli->inbuf, size + 1024);
                if (cli->outbuf == NULL || cli->inbuf == NULL)
                        return False;
                cli->bufsize = size + 1024;
index ae44ca1a779959f0c9e10fbd874d84e0b460a7a5..761741a91bc91442e38c1b740628af7191e9826a 100644 (file)
@@ -210,7 +210,7 @@ BOOL cli_receive_trans(struct cli_state *cli,int trans,
 
        /* allocate it */
        if (total_data!=0) {
-               tdata = Realloc(*data,total_data);
+               tdata = SMB_REALLOC(*data,total_data);
                if (!tdata) {
                        DEBUG(0,("cli_receive_trans: failed to enlarge data buffer\n"));
                        cli_signing_trans_stop(cli);
@@ -221,7 +221,7 @@ BOOL cli_receive_trans(struct cli_state *cli,int trans,
        }
 
        if (total_param!=0) {
-               tparam = Realloc(*param,total_param);
+               tparam = SMB_REALLOC(*param,total_param);
                if (!tparam) {
                        DEBUG(0,("cli_receive_trans: failed to enlarge param buffer\n"));
                        cli_signing_trans_stop(cli);
@@ -527,7 +527,7 @@ BOOL cli_receive_nt_trans(struct cli_state *cli,
 
        /* allocate it */
        if (total_data) {
-               tdata = Realloc(*data,total_data);
+               tdata = SMB_REALLOC(*data,total_data);
                if (!tdata) {
                        DEBUG(0,("cli_receive_nt_trans: failed to enlarge data buffer to %d\n",total_data));
                        cli_signing_trans_stop(cli);
@@ -538,7 +538,7 @@ BOOL cli_receive_nt_trans(struct cli_state *cli,
        }
 
        if (total_param) {
-               tparam = Realloc(*param,total_param);
+               tparam = SMB_REALLOC(*param,total_param);
                if (!tparam) {
                        DEBUG(0,("cli_receive_nt_trans: failed to enlarge param buffer to %d\n", total_param));
                        cli_signing_trans_stop(cli);
index 15cc75b129e6b64019b894ef06834da22f6ab2ee..fe863db422afa18c5c07dbd52c6d387c959d969e 100644 (file)
@@ -115,8 +115,7 @@ void add_failed_connection_entry(const char *domain, const char *server, NTSTATU
 
        /* Create negative lookup cache entry for this domain and controller */
 
-       if ( !(fcc = (struct failed_connection_cache *)malloc(sizeof(struct failed_connection_cache))) ) 
-       {
+       if ( !(fcc = SMB_MALLOC_P(struct failed_connection_cache)) ) {
                DEBUG(0, ("malloc failed in add_failed_connection_entry!\n"));
                return;
        }
index caf226c5a6a2d3e2573b14deb89a1716074f2f8b..ddb27535233abc12488d12085a0b365f6c41dda1 100644 (file)
@@ -55,7 +55,7 @@ static int smbc_add_cached_server(SMBCCTX * context, SMBCSRV * new,
 {
        struct smbc_server_cache * srvcache = NULL;
 
-       if (!(srvcache = malloc(sizeof(*srvcache)))) {
+       if (!(srvcache = SMB_MALLOC_P(struct smbc_server_cache))) {
                errno = ENOMEM;
                DEBUG(3, ("Not enough space for server cache allocation\n"));
                return 1;
@@ -65,25 +65,25 @@ static int smbc_add_cached_server(SMBCCTX * context, SMBCSRV * new,
 
        srvcache->server = new;
 
-       srvcache->server_name = strdup(server);
+       srvcache->server_name = SMB_STRDUP(server);
        if (!srvcache->server_name) {
                errno = ENOMEM;
                goto failed;
        }
 
-       srvcache->share_name = strdup(share);
+       srvcache->share_name = SMB_STRDUP(share);
        if (!srvcache->share_name) {
                errno = ENOMEM;
                goto failed;
        }
 
-       srvcache->workgroup = strdup(workgroup);
+       srvcache->workgroup = SMB_STRDUP(workgroup);
        if (!srvcache->workgroup) {
                errno = ENOMEM;
                goto failed;
        }
 
-       srvcache->username = strdup(username);
+       srvcache->username = SMB_STRDUP(username);
        if (!srvcache->username) {
                errno = ENOMEM;
                goto failed;
index c4be848cc17f90ca7c927ed1f2afe56377164d26..83088a14defcbc5f0fe9fd282cdb50cf41a8ede0 100644 (file)
@@ -73,7 +73,7 @@ static int add_fd(SMBCFILE * file)
                         return -1;
                 }
 
-                f = malloc(sizeof(struct smbc_compat_fdlist));
+                f = SMB_MALLOC_P(struct smbc_compat_fdlist);
                 if (!f) {
                         errno = ENOMEM;
                         return -1;
index 3dec0c92b4860e40c6a31b3361c3a97277b2efd2..df9c4ddcadcd8866df60fc473c8028124f295a68 100644 (file)
@@ -99,7 +99,7 @@ decode_urlpart(char *segment, size_t sizeof_segment)
     }
 
     /* make a copy of the old one */
-    new_usegment = (char*)malloc( old_length * 3 + 1 );
+    new_usegment = (char*)SMB_MALLOC( old_length * 3 + 1 );
 
     while( i < old_length ) {
        int bReencode = False;
@@ -671,7 +671,7 @@ SMBCSRV *smbc_server(SMBCCTX *context,
         * Let's find a free server_fd 
         */
 
-       srv = (SMBCSRV *)malloc(sizeof(*srv));
+       srv = SMB_MALLOC_P(SMBCSRV);
        if (!srv) {
                errno = ENOMEM;
                goto failed;
@@ -776,7 +776,7 @@ SMBCSRV *smbc_attr_server(SMBCCTX *context,
                         return NULL;
                 }
 
-                ipc_srv = (SMBCSRV *)malloc(sizeof(*ipc_srv));
+                ipc_srv = SMB_MALLOC_P(SMBCSRV);
                 if (!ipc_srv) {
                         errno = ENOMEM;
                         cli_shutdown(ipc_cli);
@@ -871,7 +871,7 @@ static SMBCFILE *smbc_open_ctx(SMBCCTX *context, const char *fname, int flags, m
        }
        else {
          
-               file = malloc(sizeof(SMBCFILE));
+               file = SMB_MALLOC_P(SMBCFILE);
 
                if (!file) {
 
@@ -895,7 +895,7 @@ static SMBCFILE *smbc_open_ctx(SMBCCTX *context, const char *fname, int flags, m
                /* Fill in file struct */
 
                file->cli_fd  = fd;
-               file->fname   = strdup(fname);
+               file->fname   = SMB_STRDUP(fname);
                file->srv     = srv;
                file->offset  = 0;
                file->file    = True;
@@ -1629,7 +1629,7 @@ static int add_dirent(SMBCFILE *dir, const char *name, const char *comment, uint
 
        size = sizeof(struct smbc_dirent) + u_name_len + u_comment_len + 1;
     
-       dirent = malloc(size);
+       dirent = SMB_MALLOC(size);
 
        if (!dirent) {
 
@@ -1642,7 +1642,7 @@ static int add_dirent(SMBCFILE *dir, const char *name, const char *comment, uint
 
        if (dir->dir_list == NULL) {
 
-               dir->dir_list = malloc(sizeof(struct smbc_dir_list));
+               dir->dir_list = SMB_MALLOC_P(struct smbc_dir_list);
                if (!dir->dir_list) {
 
                        SAFE_FREE(dirent);
@@ -1656,7 +1656,7 @@ static int add_dirent(SMBCFILE *dir, const char *name, const char *comment, uint
        }
        else {
 
-               dir->dir_end->next = malloc(sizeof(struct smbc_dir_list));
+               dir->dir_end->next = SMB_MALLOC_P(struct smbc_dir_list);
                
                if (!dir->dir_end->next) {
                        
@@ -1835,7 +1835,7 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
 
        pstrcpy(workgroup, context->workgroup);
 
-       dir = malloc(sizeof(*dir));
+       dir = SMB_MALLOC_P(SMBCFILE);
 
        if (!dir) {
 
@@ -1847,7 +1847,7 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
        ZERO_STRUCTP(dir);
 
        dir->cli_fd   = 0;
-       dir->fname    = strdup(fname);
+       dir->fname    = SMB_STRDUP(fname);
        dir->srv      = NULL;
        dir->offset   = 0;
        dir->file     = False;
@@ -3110,7 +3110,7 @@ static BOOL add_ace(SEC_ACL **the_acl, SEC_ACE *ace, TALLOC_CTX *ctx)
                return True;
        }
 
-       aces = calloc(1+(*the_acl)->num_aces,sizeof(SEC_ACE));
+       aces = SMB_CALLOC_ARRAY(SEC_ACE, 1+(*the_acl)->num_aces);
        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);
@@ -3143,7 +3143,7 @@ static SEC_DESC *sec_desc_parse(TALLOC_CTX *ctx,
                }
 
                if (StrnCaseCmp(tok,"OWNER:", 6) == 0) {
-                       owner_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       owner_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!owner_sid ||
                            !convert_string_to_sid(ipc_cli, pol,
                                                    numeric,
@@ -3155,7 +3155,7 @@ static SEC_DESC *sec_desc_parse(TALLOC_CTX *ctx,
                }
 
                if (StrnCaseCmp(tok,"OWNER+:", 7) == 0) {
-                       owner_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       owner_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!owner_sid ||
                            !convert_string_to_sid(ipc_cli, pol,
                                                    False,
@@ -3167,7 +3167,7 @@ static SEC_DESC *sec_desc_parse(TALLOC_CTX *ctx,
                }
 
                if (StrnCaseCmp(tok,"GROUP:", 6) == 0) {
-                       grp_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!grp_sid ||
                            !convert_string_to_sid(ipc_cli, pol,
                                                    numeric,
@@ -3179,7 +3179,7 @@ static SEC_DESC *sec_desc_parse(TALLOC_CTX *ctx,
                }
 
                if (StrnCaseCmp(tok,"GROUP+:", 7) == 0) {
-                       grp_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!grp_sid ||
                            !convert_string_to_sid(ipc_cli, pol,
                                                    False,
@@ -4273,7 +4273,7 @@ SMBCCTX * smbc_new_context(void)
 {
         SMBCCTX * context;
 
-        context = malloc(sizeof(SMBCCTX));
+        context = SMB_MALLOC_P(SMBCCTX);
         if (!context) {
                 errno = ENOMEM;
                 return NULL;
@@ -4281,7 +4281,7 @@ SMBCCTX * smbc_new_context(void)
 
         ZERO_STRUCTP(context);
 
-        context->internal = malloc(sizeof(struct smbc_internal_data));
+        context->internal = SMB_MALLOC_P(struct smbc_internal_data);
         if (!context->internal) {
                 errno = ENOMEM;
                 return NULL;
@@ -4488,8 +4488,8 @@ SMBCCTX * smbc_init_context(SMBCCTX * context)
                  */
                 user = getenv("USER");
                 /* walk around as "guest" if no username can be found */
-                if (!user) context->user = strdup("guest");
-                else context->user = strdup(user);
+                if (!user) context->user = SMB_STRDUP("guest");
+                else context->user = SMB_STRDUP(user);
         }
 
         if (!context->netbios_name) {
@@ -4498,14 +4498,14 @@ SMBCCTX * smbc_init_context(SMBCCTX * context)
                  * back on constructing our netbios name from our hostname etc
                  */
                 if (global_myname()) {
-                        context->netbios_name = strdup(global_myname());
+                        context->netbios_name = SMB_STRDUP(global_myname());
                 }
                 else {
                         /*
                          * Hmmm, I want to get hostname as well, but I am too lazy for the moment
                          */
                         pid = sys_getpid();
-                        context->netbios_name = malloc(17);
+                        context->netbios_name = SMB_MALLOC(17);
                         if (!context->netbios_name) {
                                 errno = ENOMEM;
                                 return NULL;
@@ -4518,11 +4518,11 @@ SMBCCTX * smbc_init_context(SMBCCTX * context)
 
         if (!context->workgroup) {
                 if (lp_workgroup()) {
-                        context->workgroup = strdup(lp_workgroup());
+                        context->workgroup = SMB_STRDUP(lp_workgroup());
                 }
                 else {
                         /* TODO: Think about a decent default workgroup */
-                        context->workgroup = strdup("samba");
+                        context->workgroup = SMB_STRDUP("samba");
                 }
         }
 
index fef769314af399e3fc43ac33930f2b68defb7a95..e6868fb3730904d096262e91be26d6c57ad270b4 100644 (file)
@@ -55,7 +55,7 @@ static struct node_status *parse_node_status(char *p, int *num_names, struct nod
        if (*num_names == 0)
                return NULL;
 
-       ret = (struct node_status *)malloc(sizeof(struct node_status)* (*num_names));
+       ret = SMB_MALLOC_ARRAY(struct node_status,*num_names);
        if (!ret)
                return NULL;
 
@@ -478,8 +478,8 @@ struct in_addr *name_query(int fd,const char *name,int name_type,
                                continue;
                        }
                        
-                       tmp_ip_list = (struct in_addr *)Realloc( ip_list, sizeof( ip_list[0] )
-                                                                * ( (*count) + nmb2->answers->rdlength/6 ) );
+                       tmp_ip_list = SMB_REALLOC_ARRAY( ip_list, struct in_addr,
+                                               (*count) + nmb2->answers->rdlength/6 );
                        
                        if (!tmp_ip_list) {
                                DEBUG(0,("name_query: Realloc failed.\n"));
@@ -655,7 +655,7 @@ static BOOL convert_ip2service( struct ip_service **return_iplist, struct in_add
                return False;
                
        /* copy the ip address; port will be PORT_NONE */
-       if ( (*return_iplist = (struct ip_service*)malloc(count*sizeof(struct ip_service))) == NULL ) {
+       if ( (*return_iplist = SMB_MALLOC_ARRAY(struct ip_service, count)) == NULL ) {
                DEBUG(0,("convert_ip2service: malloc failed for %d enetries!\n", count ));
                return False;
        }
@@ -868,8 +868,8 @@ static BOOL resolve_lmhosts(const char *name, int name_type,
                if ((name_type2 != -1) && (name_type != name_type2))
                        continue;
 
-               *return_iplist = (struct ip_service *)realloc((*return_iplist),
-                       sizeof(struct ip_service) * ((*return_count)+1));
+               *return_iplist = SMB_REALLOC_ARRAY((*return_iplist), struct ip_service,
+                                       (*return_count)+1);
 
                if ((*return_iplist) == NULL) {
                        DEBUG(3,("resolve_lmhosts: malloc fail !\n"));
@@ -919,7 +919,7 @@ static BOOL resolve_hosts(const char *name, int name_type,
        if (((hp = sys_gethostbyname(name)) != NULL) && (hp->h_addr != NULL)) {
                struct in_addr return_ip;
                putip((char *)&return_ip,(char *)hp->h_addr);
-               *return_iplist = (struct ip_service *)malloc(sizeof(struct ip_service));
+               *return_iplist = SMB_MALLOC_P(struct ip_service);
                if(*return_iplist == NULL) {
                        DEBUG(3,("resolve_hosts: malloc fail !\n"));
                        return False;
@@ -958,7 +958,7 @@ static BOOL resolve_ads(const char *name, int name_type,
                        return False;
                                
                count = count_chars(list, ' ') + 1;
-               if ( (*return_iplist = malloc(count * sizeof(struct ip_service))) == NULL ) {
+               if ( (*return_iplist = SMB_MALLOC_ARRAY(struct ip_service, count)) == NULL ) {
                        DEBUG(0,("resolve_hosts: malloc failed for %d entries\n", count ));
                        return False;
                }
@@ -1029,7 +1029,7 @@ BOOL internal_resolve_name(const char *name, int name_type,
 
        if (allzeros || allones || is_address) {
   
-               if ( (*return_iplist = (struct ip_service *)malloc(sizeof(struct ip_service))) == NULL ) {
+               if ( (*return_iplist = SMB_MALLOC_P(struct ip_service)) == NULL ) {
                        DEBUG(0,("internal_resolve_name: malloc fail !\n"));
                        return False;
                }
@@ -1333,8 +1333,7 @@ static BOOL get_dc_list(const char *domain, struct ip_service **ip_list,
                        return False;
                }
                
-               if ( (return_iplist = (struct ip_service *)
-                               malloc(num_addresses * sizeof(struct ip_service))) == NULL ) {
+               if ( (return_iplist = SMB_MALLOC_ARRAY(struct ip_service, num_addresses)) == NULL ) {
                        DEBUG(3,("get_dc_list: malloc fail !\n"));
                        return False;
                }
index 7f22ce0096afc6ff86186b87eb62d9a67a49b643..1c93f7b1e2bd15b36e236b4a46f926cfdabacefe 100644 (file)
@@ -354,7 +354,7 @@ static BOOL parse_alloc_res_rec(char *inbuf,int *offset,int length,
 {
        int i;
 
-       *recs = (struct res_rec *)malloc(sizeof(**recs)*count);
+       *recs = SMB_MALLOC_ARRAY(struct res_rec, count);
        if (!*recs)
                return(False);
 
@@ -557,7 +557,7 @@ static struct packet_struct *copy_nmb_packet(struct packet_struct *packet)
        struct nmb_packet *copy_nmb;
        struct packet_struct *pkt_copy;
 
-       if(( pkt_copy = (struct packet_struct *)malloc(sizeof(*packet))) == NULL) {
+       if(( pkt_copy = SMB_MALLOC_P(struct packet_struct)) == NULL) {
                DEBUG(0,("copy_nmb_packet: malloc fail.\n"));
                return NULL;
        }
@@ -580,22 +580,19 @@ static struct packet_struct *copy_nmb_packet(struct packet_struct *packet)
        /* Now copy any resource records. */
 
        if (nmb->answers) {
-               if((copy_nmb->answers = (struct res_rec *)
-                                       malloc(nmb->header.ancount * sizeof(struct res_rec))) == NULL)
+               if((copy_nmb->answers = SMB_MALLOC_ARRAY(struct res_rec,nmb->header.ancount)) == NULL)
                        goto free_and_exit;
                memcpy((char *)copy_nmb->answers, (char *)nmb->answers, 
                                nmb->header.ancount * sizeof(struct res_rec));
        }
        if (nmb->nsrecs) {
-               if((copy_nmb->nsrecs = (struct res_rec *)
-                                       malloc(nmb->header.nscount * sizeof(struct res_rec))) == NULL)
+               if((copy_nmb->nsrecs = SMB_MALLOC_ARRAY(struct res_rec, nmb->header.nscount)) == NULL)
                        goto free_and_exit;
                memcpy((char *)copy_nmb->nsrecs, (char *)nmb->nsrecs, 
                                nmb->header.nscount * sizeof(struct res_rec));
        }
        if (nmb->additional) {
-               if((copy_nmb->additional = (struct res_rec *)
-                                       malloc(nmb->header.arcount * sizeof(struct res_rec))) == NULL)
+               if((copy_nmb->additional = SMB_MALLOC_ARRAY(struct res_rec, nmb->header.arcount)) == NULL)
                        goto free_and_exit;
                memcpy((char *)copy_nmb->additional, (char *)nmb->additional, 
                                nmb->header.arcount * sizeof(struct res_rec));
@@ -622,7 +619,7 @@ static struct packet_struct *copy_dgram_packet(struct packet_struct *packet)
 { 
        struct packet_struct *pkt_copy;
 
-       if(( pkt_copy = (struct packet_struct *)malloc(sizeof(*packet))) == NULL) {
+       if(( pkt_copy = SMB_MALLOC_P(struct packet_struct)) == NULL) {
                DEBUG(0,("copy_dgram_packet: malloc fail.\n"));
                return NULL;
        }
@@ -700,7 +697,7 @@ struct packet_struct *parse_packet(char *buf,int length,
        struct packet_struct *p;
        BOOL ok=False;
 
-       p = (struct packet_struct *)malloc(sizeof(*p));
+       p = SMB_MALLOC_P(struct packet_struct);
        if (!p)
                return(NULL);
 
index 6e41a61bf1bb492eef497fce96731050cc5ae887..eb1fce5439202bd98f2213a0855096b369d15294 100644 (file)
@@ -766,7 +766,7 @@ NTSTATUS ntlmssp_server_start(NTLMSSP_STATE **ntlmssp_state)
 
        mem_ctx = talloc_init("NTLMSSP context");
        
-       *ntlmssp_state = talloc_zero(mem_ctx, sizeof(**ntlmssp_state));
+       *ntlmssp_state = TALLOC_ZERO_P(mem_ctx, NTLMSSP_STATE);
        if (!*ntlmssp_state) {
                DEBUG(0,("ntlmssp_server_start: talloc failed!\n"));
                talloc_destroy(mem_ctx);
@@ -1075,7 +1075,7 @@ NTSTATUS ntlmssp_client_start(NTLMSSP_STATE **ntlmssp_state)
 
        mem_ctx = talloc_init("NTLMSSP Client context");
        
-       *ntlmssp_state = talloc_zero(mem_ctx, sizeof(**ntlmssp_state));
+       *ntlmssp_state = TALLOC_ZERO_P(mem_ctx, NTLMSSP_STATE);
        if (!*ntlmssp_state) {
                DEBUG(0,("ntlmssp_client_start: talloc failed!\n"));
                talloc_destroy(mem_ctx);
index ed2283725c891f3f30c05920e60d11ae4faaa8dc..fdfc92a750a9d10fc3e4a707d60937f68817b0ac 100644 (file)
@@ -188,7 +188,7 @@ NET_USER_INFO_3* netsamlogon_cache_get( TALLOC_CTX *mem_ctx, const DOM_SID *user
        
        if ( data.dptr ) {
                
-               if ( (user = (NET_USER_INFO_3*)malloc(sizeof(NET_USER_INFO_3))) == NULL )
+               if ( (user = SMB_MALLOC_P(NET_USER_INFO_3)) == NULL )
                        return NULL;
                        
                prs_init( &ps, 0, mem_ctx, UNMARSHALL );
index b02a13c73e12f73738023c04da787a0696dad441..df69ff3e41f3e14be925cbe4262f44a7a9e4cb54 100644 (file)
@@ -54,7 +54,7 @@ static BOOL store_sequence_for_reply(struct outstanding_packet_lookup **list,
                }
        }
 
-       t = smb_xmalloc(sizeof(*t));
+       t = SMB_XMALLOC_P(struct outstanding_packet_lookup);
        ZERO_STRUCTP(t);
 
        t->mid = mid;
@@ -459,7 +459,7 @@ BOOL cli_simple_set_signing(struct cli_state *cli,
                return False;
        }
 
-       data = smb_xmalloc(sizeof(*data));
+       data = SMB_XMALLOC_P(struct smb_basic_signing_context);
        memset(data, '\0', sizeof(*data));
 
        cli->sign_info.signing_context = data;
@@ -509,7 +509,7 @@ void cli_signing_trans_start(struct cli_state *cli, uint16 mid)
        if (!cli->sign_info.doing_signing || !data)
                return;
 
-       data->trans_info = smb_xmalloc(sizeof(struct trans_info_context));
+       data->trans_info = SMB_XMALLOC_P(struct trans_info_context);
        ZERO_STRUCTP(data->trans_info);
 
        /* This ensures the sequence is pulled off the outstanding packet list */
@@ -982,7 +982,7 @@ void srv_signing_trans_start(uint16 mid)
        if (!data)
                return;
 
-       data->trans_info = smb_xmalloc(sizeof(struct trans_info_context));
+       data->trans_info = SMB_XMALLOC_P(struct trans_info_context);
        ZERO_STRUCTP(data->trans_info);
 
        data->trans_info->reply_seq_num = data->send_seq_num-1;
@@ -1051,7 +1051,7 @@ void srv_set_signing(const DATA_BLOB user_session_key, const DATA_BLOB response)
        
        srv_sign_info.doing_signing = True;
 
-       data = smb_xmalloc(sizeof(*data));
+       data = SMB_XMALLOC_P(struct smb_basic_signing_context);
        memset(data, '\0', sizeof(*data));
 
        srv_sign_info.signing_context = data;
index 50caf7b4c0e9d09b6016e45c25218f58b0cd5b02..a0f5565d4f3f9fbdff12a7e74dcbb1cf2aa95cbd 100644 (file)
@@ -42,12 +42,11 @@ static BOOL read_negTokenInit(ASN1_DATA *asn1, negTokenInit_t *token)
                        asn1_start_tag(asn1, ASN1_CONTEXT(0));
                        asn1_start_tag(asn1, ASN1_SEQUENCE(0));
 
-                       token->mechTypes = malloc(sizeof(*token->mechTypes));
+                       token->mechTypes = SMB_MALLOC_P(char *);
                        for (i = 0; !asn1->has_error &&
                                     0 < asn1_tag_remaining(asn1); i++) {
                                token->mechTypes = 
-                                       realloc(token->mechTypes, (i + 2) *
-                                               sizeof(*token->mechTypes));
+                                       SMB_REALLOC_ARRAY(token->mechTypes, char *, i + 2);
                                asn1_read_OID(asn1, token->mechTypes + i);
                        }
                        token->mechTypes[i] = NULL;
index 61144eb59a9c801fafe516e0354694a598359a04..d92027e267aa68ecd38f3122a5e43f535ac48946 100644 (file)
@@ -407,7 +407,7 @@ NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum,
        }
 
        /* no conflicts - add it to the list of locks */
-       tp = Realloc(dbuf.dptr, dbuf.dsize + sizeof(*locks));
+       tp = SMB_REALLOC(dbuf.dptr, dbuf.dsize + sizeof(*locks));
        if (!tp) {
                status = NT_STATUS_NO_MEMORY;
                goto fail;
index d4e8c493d501f84cac37ba0364c5af9a5ae44b09..b2f30a5684375492bd2e416a093206a31263145a 100644 (file)
@@ -679,7 +679,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type)
                pstrcat(fname, fsp->fsp_name);
 
                size = sizeof(*data) + sizeof(share_mode_entry) + strlen(fname) + 1;
-               p = (char *)malloc(size);
+               p = (char *)SMB_MALLOC(size);
                if (!p)
                        return False;
                data = (struct locking_data *)p;
@@ -711,7 +711,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type)
                fsp->fsp_name, data->u.num_share_mode_entries ));
 
        size = dbuf.dsize + sizeof(share_mode_entry);
-       p = malloc(size);
+       p = SMB_MALLOC(size);
        if (!p) {
                SAFE_FREE(dbuf.dptr);
                return False;
@@ -1161,7 +1161,7 @@ BOOL add_deferred_open(uint16 mid, struct timeval *ptv, SMB_DEV_T dev, SMB_INO_T
                /* we'll need to create a new record */
 
                size = sizeof(*data) + sizeof(deferred_open_entry) + strlen(fname) + 1;
-               p = (char *)malloc(size);
+               p = (char *)SMB_MALLOC(size);
                if (!p)
                        return False;
                data = (struct deferred_open_data *)p;
@@ -1193,7 +1193,7 @@ BOOL add_deferred_open(uint16 mid, struct timeval *ptv, SMB_DEV_T dev, SMB_INO_T
                fname, data->u.num_deferred_open_entries ));
 
        size = dbuf.dsize + sizeof(deferred_open_entry);
-       p = malloc(size);
+       p = SMB_MALLOC(size);
        if (!p) {
                SAFE_FREE(dbuf.dptr);
                return False;
index 0e5edfa0eb8ba2f17e4f7bf699d90b78f7bc441c..6ab2ed377e2f998d55acb841aa0c321170f01d43 100644 (file)
@@ -102,7 +102,7 @@ static BOOL add_fd_to_close_entry(files_struct *fsp)
 
        dbuf = tdb_fetch(posix_pending_close_tdb, kbuf);
 
-       tp = Realloc(dbuf.dptr, dbuf.dsize + sizeof(int));
+       tp = SMB_REALLOC(dbuf.dptr, dbuf.dsize + sizeof(int));
        if (!tp) {
                DEBUG(0,("add_fd_to_close_entry: Realloc fail !\n"));
                SAFE_FREE(dbuf.dptr);
@@ -371,7 +371,7 @@ static BOOL add_posix_lock_entry(files_struct *fsp, SMB_OFF_T start, SMB_OFF_T s
        pl.size = size;
        pl.lock_type = lock_type;
 
-       tp = Realloc(dbuf.dptr, dbuf.dsize + sizeof(pl));
+       tp = SMB_REALLOC(dbuf.dptr, dbuf.dsize + sizeof(pl));
        if (!tp) {
                DEBUG(0,("add_posix_lock_entry: Realloc fail !\n"));
                goto fail;
@@ -896,8 +896,7 @@ BECOMES.....
         | l_curr|         | l_new   |
         +-------+         +---------+
 **********************************************/
-                               struct lock_list *l_new = (struct lock_list *)talloc(ctx,
-                                                                                                       sizeof(struct lock_list));
+                               struct lock_list *l_new = TALLOC_P(ctx, struct lock_list);
 
                                if(l_new == NULL) {
                                        DEBUG(0,("posix_lock_list: talloc fail.\n"));
@@ -1002,7 +1001,7 @@ BOOL set_posix_lock(files_struct *fsp, SMB_BIG_UINT u_offset, SMB_BIG_UINT u_cou
                return True; /* Not a fatal error. */
        }
 
-       if ((ll = (struct lock_list *)talloc(l_ctx, sizeof(struct lock_list))) == NULL) {
+       if ((ll = TALLOC_P(l_ctx, struct lock_list)) == NULL) {
                DEBUG(0,("set_posix_lock: unable to talloc unlock list.\n"));
                talloc_destroy(l_ctx);
                return True; /* Not a fatal error. */
@@ -1148,7 +1147,7 @@ BOOL release_posix_lock(files_struct *fsp, SMB_BIG_UINT u_offset, SMB_BIG_UINT u
                return True; /* Not a fatal error. */
        }
 
-       if ((ul = (struct lock_list *)talloc(ul_ctx, sizeof(struct lock_list))) == NULL) {
+       if ((ul = TALLOC_P(ul_ctx, struct lock_list)) == NULL) {
                DEBUG(0,("release_posix_lock: unable to talloc unlock list.\n"));
                talloc_destroy(ul_ctx);
                return True; /* Not a fatal error. */
index 68b8aad0ac55784b343095ec3bac002ec3d0312d..1b36914bbea7219e8448090dd6f0cf82c72fc99d 100644 (file)
@@ -126,16 +126,15 @@ static void atalk_add_to_list(name_compare_entry **list)
                }
        }
 
-       if (!(new_list = calloc(1, 
-         (count == 0 ? 1 : count + 1) * sizeof(name_compare_entry))))
+       if (!(new_list = SMB_CALLOC_ARRAY(name_compare_entry, (count == 0 ? 1 : count + 1))))
                return;
 
        for (i = 0; i < count; i ++) {
-               new_list[i].name    = strdup(cur_list[i].name);
+               new_list[i].name    = SMB_STRDUP(cur_list[i].name);
                new_list[i].is_wild = cur_list[i].is_wild;
        }
 
-       new_list[i].name    = strdup(APPLEDOUBLE);
+       new_list[i].name    = SMB_STRDUP(APPLEDOUBLE);
        new_list[i].is_wild = False;
 
        free_namearray(*list);
index 1cb1cb327b49f29a4b9a72dac7ce3a0b63e8994f..5ff7931c585fe8893733f5a23c02fb159bed052e 100644 (file)
@@ -215,12 +215,12 @@ static BOOL recycle_create_dir(vfs_handle_struct *handle, const char *dname)
 
        mode = S_IRUSR | S_IWUSR | S_IXUSR;
 
-       tmp_str = strdup(dname);
+       tmp_str = SMB_STRDUP(dname);
        ALLOC_CHECK(tmp_str, done);
        tok_str = tmp_str;
 
        len = strlen(dname)+1;
-       new_dir = (char *)malloc(len + 1);
+       new_dir = (char *)SMB_MALLOC(len + 1);
        ALLOC_CHECK(new_dir, done);
        *new_dir = '\0';
 
@@ -389,11 +389,11 @@ static int recycle_unlink(vfs_handle_struct *handle, connection_struct *conn, co
        base = strrchr(file_name, '/');
        if (base == NULL) {
                base = file_name;
-               path_name = strdup("/");
+               path_name = SMB_STRDUP("/");
                ALLOC_CHECK(path_name, done);
        }
        else {
-               path_name = strdup(file_name);
+               path_name = SMB_STRDUP(file_name);
                ALLOC_CHECK(path_name, done);
                path_name[base - file_name] = '\0';
                base++;
@@ -422,7 +422,7 @@ static int recycle_unlink(vfs_handle_struct *handle, connection_struct *conn, co
        if (recycle_keep_dir_tree(handle) == True) {
                asprintf(&temp_name, "%s/%s", repository, path_name);
        } else {
-               temp_name = strdup(repository);
+               temp_name = SMB_STRDUP(repository);
        }
        ALLOC_CHECK(temp_name, done);
 
index 88135c0aed14b0f77a89ed745993d2f98be0c685..133e8e9c647ed64ba60201846def0c85197b2dd0 100644 (file)
@@ -82,7 +82,7 @@ static DIR *shadow_copy_opendir(vfs_handle_struct *handle, connection_struct *co
                return NULL;
        }
 
-       dirp = (shadow_copy_Dir *)malloc(sizeof(shadow_copy_Dir));
+       dirp = SMB_MALLOC_P(shadow_copy_Dir);
        if (!dirp) {
                DEBUG(0,("shadow_copy_opendir: Out of memory\n"));
                SMB_VFS_NEXT_CLOSEDIR(handle,conn,p);
@@ -108,7 +108,7 @@ static DIR *shadow_copy_opendir(vfs_handle_struct *handle, connection_struct *co
 
                DEBUG(10,("shadow_copy_opendir: not hide [%s]\n",d->d_name));
 
-               r = (SMB_STRUCT_DIRENT *)Realloc(dirp->dirs,(dirp->num+1)*sizeof(SMB_STRUCT_DIRENT));
+               r = SMB_REALLOC_ARRAY(dirp->dirs,SMB_STRUCT_DIRENT, dirp->num+1);
                if (!r) {
                        DEBUG(0,("shadow_copy_opendir: Out of memory\n"));
                        break;
@@ -176,7 +176,7 @@ static int shadow_copy_get_shadow_copy_data(vfs_handle_struct *handle, files_str
                        continue;
                }
 
-               tlabels = (SHADOW_COPY_LABEL *)talloc_realloc(shadow_copy_data->mem_ctx,
+               tlabels = (SHADOW_COPY_LABEL *)TALLOC_REALLOC(shadow_copy_data->mem_ctx,
                                                                        shadow_copy_data->labels,
                                                                        (shadow_copy_data->num_volumes+1)*sizeof(SHADOW_COPY_LABEL));
                if (tlabels == NULL) {
index c536deb6f45e21525598146f6b90d1491733dc27..b928a8a7c5c377a121a2bf1c84e366e34e6bb0a6 100644 (file)
@@ -206,7 +206,7 @@ static void release_1d_name( struct subnet_record *subrec, const char *workgroup
                struct userdata_struct *userdata;
                size_t size = sizeof(struct userdata_struct) + sizeof(BOOL);
 
-               if((userdata = (struct userdata_struct *)malloc(size)) == NULL) {
+               if((userdata = (struct userdata_struct *)SMB_MALLOC(size)) == NULL) {
                        DEBUG(0,("release_1d_name: malloc fail.\n"));
                        return;
                }
@@ -545,7 +545,7 @@ in workgroup %s on subnet %s\n",
        subrec->work_changed = True;
 
        /* Setup the userdata_struct. */
-       if((userdata = (struct userdata_struct *)malloc(size)) == NULL) {
+       if((userdata = (struct userdata_struct *)SMB_MALLOC(size)) == NULL) {
                DEBUG(0,("become_local_master_browser: malloc fail.\n"));
                return;
        }
index c92513fae81a0221bff0abab3842fa976d94d27d..e8797a99d5136d3708ec2e6f08e281f88ad9a1e4 100644 (file)
@@ -87,7 +87,7 @@ struct browse_cache_record *create_browser_in_lmb_cache( const char *work_name,
        struct browse_cache_record *browc;
        time_t now = time( NULL );
 
-       browc = (struct browse_cache_record *)malloc( sizeof( *browc ) );
+       browc = SMB_MALLOC_P(struct browse_cache_record);
 
        if( NULL == browc ) {
                DEBUG( 0, ("create_browser_in_lmb_cache: malloc fail !\n") );
index 56ffdc2670f52a06f28611d1d036618f13ac630b..03234bb98fa014da07d8fa18439850831173955e 100644 (file)
@@ -324,7 +324,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
        /* Setup the userdata_struct - this is copied so we can use
        a stack variable for this. */
 
-       if((userdata = (struct userdata_struct *)malloc(size)) == NULL) {
+       if((userdata = (struct userdata_struct *)SMB_MALLOC(size)) == NULL) {
                DEBUG(0, ("find_domain_master_name_query_success: malloc fail.\n"));
                return;
        }
index 9214594096c5cd5d63735d13568567670122d073..7fac8c25739b7f2c62c169c599982e115b2427df 100644 (file)
@@ -516,7 +516,7 @@ void process_name_query_request(struct subnet_record *subrec, struct packet_stru
                        if (namerec->data.num_ips == 1) {
                                prdata = rdata;
                        } else {
-                               if ((prdata = (char *)malloc( namerec->data.num_ips * 6 )) == NULL) {
+                               if ((prdata = (char *)SMB_MALLOC( namerec->data.num_ips * 6 )) == NULL) {
                                        DEBUG(0,("process_name_query_request: malloc fail !\n"));
                                        return;
                                }
index bb14ff7641ae8d7b50b97c37f7839015e5da79fc..bdb308a2ea02c8f6c6bfa148387c4f9867d094d0 100644 (file)
@@ -181,14 +181,14 @@ struct name_record *add_name_to_subnet( struct subnet_record *subrec,
        struct name_record *namerec;
        time_t time_now = time(NULL);
 
-       namerec = (struct name_record *)malloc( sizeof(*namerec) );
+       namerec = SMB_MALLOC_P(struct name_record);
        if( NULL == namerec ) {
                DEBUG( 0, ( "add_name_to_subnet: malloc fail.\n" ) );
                return( NULL );
        }
 
        memset( (char *)namerec, '\0', sizeof(*namerec) );
-       namerec->data.ip = (struct in_addr *)malloc( sizeof(struct in_addr) * num_ips );
+       namerec->data.ip = SMB_MALLOC_ARRAY( struct in_addr, num_ips );
        if( NULL == namerec->data.ip ) {
                DEBUG( 0, ( "add_name_to_subnet: malloc fail when creating ip_flgs.\n" ) );
                ZERO_STRUCTP(namerec);
@@ -329,7 +329,7 @@ void add_ip_to_name_record( struct name_record *namerec, struct in_addr new_ip )
        if( find_ip_in_name_record( namerec, new_ip ) )
                return;
   
-       new_list = (struct in_addr *)malloc( (namerec->data.num_ips + 1) * sizeof(struct in_addr) );
+       new_list = SMB_MALLOC_ARRAY( struct in_addr, namerec->data.num_ips + 1);
        if( NULL == new_list ) {
                DEBUG(0,("add_ip_to_name_record: Malloc fail !\n"));
                return;
@@ -460,7 +460,7 @@ void add_samba_names_to_subnet( struct subnet_record *subrec )
                /* Create an IP list containing all our known subnets. */
 
                num_ips = iface_count();
-               iplist = (struct in_addr *)malloc( num_ips * sizeof(struct in_addr) );
+               iplist = SMB_MALLOC_ARRAY( struct in_addr, num_ips);
                if( NULL == iplist ) {
                        DEBUG(0,("add_samba_names_to_subnet: Malloc fail !\n"));
                        return;
index 4e11881f063876ed905bf9bf1a65ea1801102bef..8f2a88925421c96b15b55d49b6f96b93f12ef9eb 100644 (file)
@@ -306,7 +306,7 @@ static void multihomed_register_one(struct nmb_name *nmbname,
        struct in_addr wins_ip = wins_srv_ip_tag(tag, ip);
        fstring ip_str;
 
-       userdata = (struct userdata_struct *)malloc(sizeof(*userdata) + strlen(tag) + 1);
+       userdata = (struct userdata_struct *)SMB_MALLOC(sizeof(*userdata) + strlen(tag) + 1);
        if (!userdata) {
                DEBUG(0,("Failed to allocate userdata structure!\n"));
                return;
@@ -423,7 +423,7 @@ static void multihomed_register_name(struct nmb_name *nmbname, uint16 nb_flags,
        for(subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec) )
                num_ips++;
        
-       if((ip_list = (struct in_addr *)malloc(num_ips * sizeof(struct in_addr)))==NULL) {
+       if((ip_list = SMB_MALLOC_ARRAY(struct in_addr, num_ips))==NULL) {
                DEBUG(0,("multihomed_register_name: malloc fail !\n"));
                return;
        }
index a81b28ec7407414466411cf09b72d7dd93f51dcc..8a111eb957a2d2392929b947491be66b8bcf83eb 100644 (file)
@@ -184,7 +184,7 @@ static struct packet_struct *create_and_init_netbios_packet(struct nmb_name *nmb
        struct nmb_packet *nmb = NULL;
 
        /* Allocate the packet_struct we will return. */
-       if((packet = (struct packet_struct *)malloc(sizeof(*packet))) == NULL) {
+       if((packet = SMB_MALLOC_P(struct packet_struct)) == NULL) {
                DEBUG(0,("create_and_init_netbios_packet: malloc fail (1) for packet struct.\n"));
                return NULL;
        }
@@ -230,7 +230,7 @@ static BOOL create_and_init_additional_record(struct packet_struct *packet,
 {
        struct nmb_packet *nmb = &packet->packet.nmb;
 
-       if((nmb->additional = (struct res_rec *)malloc(sizeof(struct res_rec))) == NULL) {
+       if((nmb->additional = SMB_MALLOC_P(struct res_rec)) == NULL) {
                DEBUG(0,("initiate_name_register_packet: malloc fail for additional record.\n"));
                return False;
        }
@@ -534,7 +534,7 @@ void queue_wins_refresh(struct nmb_name *nmbname,
        DEBUG(6,("Refreshing name %s IP %s with WINS server %s using tag '%s'\n",
                 nmb_namestr(nmbname), ip_str, inet_ntoa(wins_ip), tag));
 
-       userdata = (struct userdata_struct *)malloc(sizeof(*userdata) + strlen(tag) + 1);
+       userdata = (struct userdata_struct *)SMB_MALLOC(sizeof(*userdata) + strlen(tag) + 1);
        if (!userdata) {
                DEBUG(0,("Failed to allocate userdata structure!\n"));
                return;
@@ -1645,7 +1645,7 @@ static BOOL create_listen_fdset(fd_set **ppset, int **psock_array, int *listen_n
        struct subnet_record *subrec = NULL;
        int count = 0;
        int num = 0;
-       fd_set *pset = (fd_set *)malloc(sizeof(fd_set));
+       fd_set *pset = SMB_MALLOC_P(fd_set);
 
        if(pset == NULL) {
                DEBUG(0,("create_listen_fdset: malloc fail !\n"));
@@ -1662,7 +1662,7 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
                return True;
        }
 
-       if((sock_array = (int *)malloc(((count*2) + 2)*sizeof(int))) == NULL) {
+       if((sock_array = SMB_MALLOC_ARRAY(int, (count*2) + 2)) == NULL) {
                DEBUG(0,("create_listen_fdset: malloc fail for socket array.\n"));
                return True;
        }
index ae4011eb8f0414be48c32a3b682c8d225b3a63da..5c0fc2c521c2b724acb81915297761c65f346357 100644 (file)
@@ -577,8 +577,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
                                        return;
                                }
 
-                               db_info = (struct sam_database_info *)
-                                               malloc(sizeof(struct sam_database_info) * db_count);
+                               db_info = SMB_MALLOC_ARRAY(struct sam_database_info, db_count);
 
                                if (db_info == NULL) {
                                        DEBUG(3, ("out of memory allocating info for %d databases\n", db_count));
index 30c0c129508da9ef5b4a7d2026c979496905f3a8..a5903ef462ed9decd3b833b46f9503a5c3f50c62 100644 (file)
@@ -105,7 +105,7 @@ struct response_record *make_response_record( struct subnet_record *subrec,
        struct response_record *rrec;
        struct nmb_packet *nmb = &p->packet.nmb;
 
-       if (!(rrec = (struct response_record *)malloc(sizeof(*rrec)))) {
+       if (!(rrec = SMB_MALLOC_P(struct response_record))) {
                DEBUG(0,("make_response_queue_record: malloc fail for response_record.\n"));
                return NULL;
        }
@@ -133,7 +133,7 @@ struct response_record *make_response_record( struct subnet_record *subrec,
                } else {
                        /* Primitive userdata, do a memcpy. */
                        if((rrec->userdata = (struct userdata_struct *)
-                                       malloc(sizeof(struct userdata_struct)+userdata->userdata_len)) == NULL) {
+                                       SMB_MALLOC(sizeof(struct userdata_struct)+userdata->userdata_len)) == NULL) {
                                DEBUG(0,("make_response_queue_record: malloc fail for userdata.\n"));
                                ZERO_STRUCTP(rrec);
                                SAFE_FREE(rrec);
index e6fad8319d91a35395b7b90a6d39cfba812fd634..52d00e15854afe337b1c6c19f26e7b46decfc524 100644 (file)
@@ -137,7 +137,7 @@ workgroup %s. This is a bug.\n", name, work->work_group));
                return NULL;
        }
   
-       if((servrec = (struct server_record *)malloc(sizeof(*servrec))) == NULL) {
+       if((servrec = SMB_MALLOC_P(struct server_record)) == NULL) {
                DEBUG(0,("create_server_entry_on_workgroup: malloc fail !\n"));
                return NULL;
        }
index 02a91f27606026434d1a0087d3299c30d9600041..ecfd92719bf8eb25267a76e9ee893a206b24960f 100644 (file)
@@ -147,7 +147,7 @@ static struct subnet_record *make_subnet(const char *name, enum subnet_type type
                set_socket_options(dgram_sock,"SO_BROADCAST");
        }
 
-       subrec = (struct subnet_record *)malloc(sizeof(*subrec));
+       subrec = SMB_MALLOC_P(struct subnet_record);
        if (!subrec) {
                DEBUG(0,("make_subnet: malloc fail !\n"));
                close(nmb_sock);
@@ -160,7 +160,7 @@ static struct subnet_record *make_subnet(const char *name, enum subnet_type type
                        namelist_entry_compare,
                        ubi_trOVERWRITE );
 
-       if((subrec->subnet_name = strdup(name)) == NULL) {
+       if((subrec->subnet_name = SMB_STRDUP(name)) == NULL) {
                DEBUG(0,("make_subnet: malloc fail for subnet name !\n"));
                close(nmb_sock);
                close(dgram_sock);
index 86f1f760fd23029cd187c1241711d4278097bed5..c6bcb3e574284b862f2688530489344cf6b46657 100644 (file)
@@ -143,7 +143,7 @@ done:
                return;
        }
 
-       s = (struct sync_record *)malloc(sizeof(*s));
+       s = SMB_MALLOC_P(struct sync_record);
        if (!s) goto done;
 
        ZERO_STRUCTP(s);
index cce168adb2ff6e864b54fbe1fd6ef9a78ca5688c..b01ffcffc162393da927fd475ca443e909cee580 100644 (file)
@@ -59,7 +59,7 @@ returned for name %s.\n", nmb_namestr(nmbname) ));
        if(num_ips == 1) {
                iplist = &ip;
        } else {
-               if((iplist = (struct in_addr *)malloc( num_ips * sizeof(struct in_addr) )) == NULL) {
+               if((iplist = SMB_MALLOC_ARRAY( struct in_addr, num_ips )) == NULL) {
                        DEBUG(0,("wins_proxy_name_query_request_success: malloc fail !\n"));
                        return;
                }
@@ -131,7 +131,7 @@ proxy query returns.
 static struct userdata_struct *wins_proxy_userdata_copy_fn(struct userdata_struct *userdata)
 {
        struct packet_struct *p, *copy_of_p;
-       struct userdata_struct *new_userdata = (struct userdata_struct *)malloc( userdata->userdata_len );
+       struct userdata_struct *new_userdata = (struct userdata_struct *)SMB_MALLOC( userdata->userdata_len );
 
        if(new_userdata == NULL)
                return NULL;
index 0e0289d9a331c496b3137cd68065d212085c6b67..86f5b9c4261de1cd57b2ee206efd1003c1310596 100644 (file)
@@ -318,7 +318,7 @@ BOOL initialise_wins(void)
                }
 
                /* Allocate the space for the ip_list. */
-               if((ip_list = (struct in_addr *)malloc( num_ips * sizeof(struct in_addr))) == NULL) {
+               if((ip_list = SMB_MALLOC_ARRAY( struct in_addr, num_ips)) == NULL) {
                        DEBUG(0,("initialise_wins: Malloc fail !\n"));
                        return False;
                }
@@ -1379,7 +1379,7 @@ static void process_wins_dmb_query_request(struct subnet_record *subrec,
                return;
        }
 
-       if((prdata = (char *)malloc( num_ips * 6 )) == NULL) {
+       if((prdata = (char *)SMB_MALLOC( num_ips * 6 )) == NULL) {
                DEBUG(0,("process_wins_dmb_query_request: Malloc fail !.\n"));
                return;
        }
@@ -1442,7 +1442,7 @@ void send_wins_name_query_response(int rcode, struct packet_struct *p,
                if( namerec->data.num_ips == 1 ) {
                        prdata = rdata;
                } else {
-                       if((prdata = (char *)malloc( namerec->data.num_ips * 6 )) == NULL) {
+                       if((prdata = (char *)SMB_MALLOC( namerec->data.num_ips * 6 )) == NULL) {
                                DEBUG(0,("send_wins_name_query_response: malloc fail !\n"));
                                return;
                        }
index 8f3ae36b65d015e4b74a1fda68525f4367c3a984..917116dd07708ae6e4fe4460e49c99d384317876 100644 (file)
@@ -71,7 +71,7 @@ static struct work_record *create_workgroup(const char *name, int ttl)
        struct subnet_record *subrec;
        int t = -1;
   
-       if((work = (struct work_record *)malloc(sizeof(*work))) == NULL) {
+       if((work = SMB_MALLOC_P(struct work_record)) == NULL) {
                DEBUG(0,("create_workgroup: malloc fail !\n"));
                return NULL;
        }
index a1c71becf03d47700d6c34140441e2e3bcdb8352..3a920c1134b3cb3310c62d5f0575c5f2db960c41 100644 (file)
@@ -326,7 +326,7 @@ int winbind_initgroups(char *user, gid_t gid)
                /* Add group to list if necessary */
 
                if (!is_member) {
-                       tgr = (gid_t *)Realloc(groups, sizeof(gid_t) * ngroups + 1);
+                       tgr = SMB_REALLOC_ARRAY(groups, gid_t, ngroups + 1);
                        
                        if (!tgr) {
                                errno = ENOMEM;
index 455fb74f1716b426c71c066bc136366d70d76bcd..6f4a0a275335d089266fa54f29922748af908a59 100644 (file)
@@ -357,8 +357,7 @@ static void new_connection(int listen_sock, BOOL privileged)
        
        /* Create new connection structure */
        
-       if ((state = (struct winbindd_cli_state *) 
-             malloc(sizeof(*state))) == NULL)
+       if ((state = SMB_MALLOC_P(struct winbindd_cli_state)) == NULL)
                return;
        
        ZERO_STRUCTP(state);
index e6496695cb6aff283d87df22ee36aade7381f54e..2c8b7cae28755e43aef73e0dc087b3bee587920c 100644 (file)
@@ -219,7 +219,7 @@ static WINBINDD_GR* string2group( char *string )
                if ( num_gr_members ) {
                        fstring buffer;
                        
-                       gr_members = (char**)smb_xmalloc(sizeof(char*)*(num_gr_members+1));
+                       gr_members = SMB_XMALLOC_ARRAY(char*, num_gr_members+1);
                        
                        i = 0;
                        while ( next_token(&str, buffer, ",", sizeof(buffer)) && i<num_gr_members ) {
@@ -284,7 +284,7 @@ static char* group2string( const WINBINDD_GR *grp )
                        member = grp->gr_mem[num_members];
                }
                
-               gr_mem_str = smb_xmalloc(size);
+               gr_mem_str = SMB_XMALLOC_ARRAY(char, size);
        
                for ( i=0; i<num_members; i++ ) {
                        snprintf( &gr_mem_str[idx], size-idx, "%s,", grp->gr_mem[i] );
@@ -295,7 +295,7 @@ static char* group2string( const WINBINDD_GR *grp )
        }
        else {
                /* no members */
-               gr_mem_str = smb_xmalloc(sizeof(fstring));
+               gr_mem_str = SMB_XMALLOC_ARRAY(char, sizeof(fstring));
                fstrcpy( gr_mem_str, "" );
        }
 
@@ -639,7 +639,7 @@ static BOOL wb_addgrpmember( WINBINDD_GR *grp, const char *user )
        }
        
        /* add one new slot and keep an extra for the terminating NULL */
-       members = Realloc( grp->gr_mem, (grp->num_gr_mem+2)*sizeof(char*) );
+       members = SMB_REALLOC_ARRAY( grp->gr_mem, char *, grp->num_gr_mem+2);
        if ( !members )
                return False;
                
index 1392c96fb1e49681731dcb725b959e9ec3f81ebb..f77b76cd9abdc8fc74e5c535b5ef01a92cd673d0 100644 (file)
@@ -72,7 +72,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
        ads->auth.password = secrets_fetch_machine_password(lp_workgroup(), NULL, NULL);
 
        SAFE_FREE(ads->auth.realm);
-       ads->auth.realm = strdup(lp_realm());
+       ads->auth.realm = SMB_STRDUP(lp_realm());
 
        status = ads_connect(ads);
        if (!ADS_ERR_OK(status) || !ads->config.realm) {
@@ -146,7 +146,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
                goto done;
        }
 
-       (*info) = talloc_zero(mem_ctx, count * sizeof(**info));
+       (*info) = TALLOC_ZERO_ARRAY(mem_ctx, WINBIND_USERINFO, count);
        if (!*info) {
                status = NT_STATUS_NO_MEMORY;
                goto done;
@@ -179,7 +179,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
                        continue;
                }
 
-               sid2 = talloc(mem_ctx, sizeof(*sid2));
+               sid2 = TALLOC_P(mem_ctx, DOM_SID);
                if (!sid2) {
                        status = NT_STATUS_NO_MEMORY;
                        goto done;
@@ -248,7 +248,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
                goto done;
        }
 
-       (*info) = talloc_zero(mem_ctx, count * sizeof(**info));
+       (*info) = TALLOC_ZERO_ARRAY(mem_ctx, struct acct_info, count);
        if (!*info) {
                status = NT_STATUS_NO_MEMORY;
                goto done;
@@ -421,7 +421,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
                goto done;
        }
        
-       sid2 = talloc(mem_ctx, sizeof(*sid2));
+       sid2 = TALLOC_P(mem_ctx, DOM_SID);
        if (!sid2) {
                status = NT_STATUS_NO_MEMORY;
                goto done;
@@ -501,7 +501,7 @@ static NTSTATUS lookup_usergroups_alt(struct winbindd_domain *domain,
                goto done;
        }
        
-       (*user_gids) = talloc_zero(mem_ctx, sizeof(**user_gids) * (count + 1));
+       (*user_gids) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID *, count + 1);
        (*user_gids)[0] = primary_group;
        
        *num_groups = 1;
@@ -516,7 +516,7 @@ static NTSTATUS lookup_usergroups_alt(struct winbindd_domain *domain,
                
                if (sid_equal(&group_sid, primary_group)) continue;
                
-               (*user_gids)[*num_groups] = talloc(mem_ctx, sizeof(***user_gids));
+               (*user_gids)[*num_groups] = TALLOC_P(mem_ctx, DOM_SID);
                if (!(*user_gids)[*num_groups]) {
                        status = NT_STATUS_NO_MEMORY;
                        goto done;
@@ -610,7 +610,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
                                             num_groups, user_gids);
        }
 
-       (*user_gids) = talloc_zero(mem_ctx, sizeof(**user_gids) * (count + 1));
+       (*user_gids) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID *, count + 1);
        (*user_gids)[0] = primary_group;
        
        *num_groups = 1;
@@ -618,7 +618,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
        for (i=0;i<count;i++) {
                if (sid_equal(&sids[i], primary_group)) continue;
                
-               (*user_gids)[*num_groups] = talloc(mem_ctx, sizeof(***user_gids));
+               (*user_gids)[*num_groups] = TALLOC_P(mem_ctx, DOM_SID);
                if (!(*user_gids)[*num_groups]) {
                        status = NT_STATUS_NO_MEMORY;
                        goto done;
@@ -685,7 +685,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
        members = NULL;
        num_members = 0;
 
-       attrs = talloc(mem_ctx, 3 * sizeof(*attrs));
+       attrs = TALLOC_ARRAY(mem_ctx, const char *, 3);
        attrs[1] = talloc_strdup(mem_ctx, "usnChanged");
        attrs[2] = NULL;
                
@@ -751,9 +751,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
           the problem is that the members are in the form of distinguised names
        */
 
-       (*sid_mem) = talloc_zero(mem_ctx, sizeof(**sid_mem) * num_members);
-       (*name_types) = talloc_zero(mem_ctx, sizeof(**name_types) * num_members);
-       (*names) = talloc_zero(mem_ctx, sizeof(**names) * num_members);
+       (*sid_mem) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID *, num_members);
+       (*name_types) = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_members);
+       (*names) = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_members);
 
        for (i=0;i<num_members;i++) {
                uint32 name_type;
@@ -763,7 +763,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
                if (dn_lookup(ads, mem_ctx, members[i], &name, &name_type, &sid)) {
                    (*names)[*num_names] = name;
                    (*name_types)[*num_names] = name_type;
-                   (*sid_mem)[*num_names] = talloc(mem_ctx, sizeof(***sid_mem));
+                   (*sid_mem)[*num_names] = TALLOC_P(mem_ctx, DOM_SID);
                    if (!(*sid_mem)[*num_names]) {
                            status = NT_STATUS_NO_MEMORY;
                            goto done;
@@ -850,19 +850,19 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
        
                /* Allocate memory for trusted domain names and sids */
 
-               if ( !(*names = (char **)talloc(mem_ctx, sizeof(char *) * count)) ) {
+               if ( !(*names = TALLOC_ARRAY(mem_ctx, char *, count)) ) {
                        DEBUG(0, ("trusted_domains: out of memory\n"));
                        result = NT_STATUS_NO_MEMORY;
                        goto done;
                }
 
-               if ( !(*alt_names = (char **)talloc(mem_ctx, sizeof(char *) * count)) ) {
+               if ( !(*alt_names = TALLOC_ARRAY(mem_ctx, char *, count)) ) {
                        DEBUG(0, ("trusted_domains: out of memory\n"));
                        result = NT_STATUS_NO_MEMORY;
                        goto done;
                }
 
-               if ( !(*dom_sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) * count)) ) {
+               if ( !(*dom_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, count)) ) {
                        DEBUG(0, ("trusted_domains: out of memory\n"));
                        result = NT_STATUS_NO_MEMORY;
                        goto done;
index a6ebafca965b94c1156590499537dbaf8bfa3755..ba274ec8e7060f1bec04086fbc38881b333e4dec 100644 (file)
@@ -136,7 +136,7 @@ static struct winbind_cache *get_cache(struct winbindd_domain *domain)
        if (ret)
                return ret;
        
-       ret = smb_xmalloc(sizeof(*ret));
+       ret = SMB_XMALLOC_P(struct winbind_cache);
        ZERO_STRUCTP(ret);
 
        wcache = ret;
@@ -209,7 +209,7 @@ static char *centry_string(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
                smb_panic("centry_string");
        }
 
-       ret = talloc(mem_ctx, len+1);
+       ret = TALLOC(mem_ctx, len+1);
        if (!ret) {
                smb_panic("centry_string out of memory\n");
        }
@@ -227,7 +227,7 @@ static DOM_SID *centry_sid(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
        DOM_SID *sid;
        char *sid_string;
 
-       sid = talloc(mem_ctx, sizeof(*sid));
+       sid = TALLOC_P(mem_ctx, DOM_SID);
        if (!sid)
                return NULL;
        
@@ -450,7 +450,7 @@ static struct cache_entry *wcache_fetch(struct winbind_cache *cache,
                return NULL;
        }
 
-       centry = smb_xmalloc(sizeof(*centry));
+       centry = SMB_XMALLOC_P(struct cache_entry);
        centry->data = (unsigned char *)data.dptr;
        centry->len = data.dsize;
        centry->ofs = 0;
@@ -501,7 +501,7 @@ static void centry_expand(struct cache_entry *centry, uint32 len)
        if (centry->len - centry->ofs >= len)
                return;
        centry->len *= 2;
-       p = realloc(centry->data, centry->len);
+       p = SMB_REALLOC(centry->data, centry->len);
        if (!p) {
                DEBUG(0,("out of memory: needed %d bytes in centry_expand\n", centry->len));
                smb_panic("out of memory in centry_expand");
@@ -568,10 +568,10 @@ struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status
        if (!wcache->tdb)
                return NULL;
 
-       centry = smb_xmalloc(sizeof(*centry));
+       centry = SMB_XMALLOC_P(struct cache_entry);
 
        centry->len = 8192; /* reasonable default */
-       centry->data = smb_xmalloc(centry->len);
+       centry->data = SMB_XMALLOC_ARRAY(char, centry->len);
        centry->ofs = 0;
        centry->sequence_number = domain->sequence_number;
        centry_put_uint32(centry, NT_STATUS_V(status));
@@ -684,7 +684,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
        if (*num_entries == 0)
                goto do_cached;
 
-       (*info) = talloc(mem_ctx, sizeof(**info) * (*num_entries));
+       (*info) = TALLOC_ARRAY(mem_ctx, WINBIND_USERINFO, *num_entries);
        if (! (*info))
                smb_panic("query_user_list out of memory");
        for (i=0; i<(*num_entries); i++) {
@@ -793,7 +793,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
        if (*num_entries == 0)
                goto do_cached;
 
-       (*info) = talloc(mem_ctx, sizeof(**info) * (*num_entries));
+       (*info) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries);
        if (! (*info))
                smb_panic("enum_dom_groups out of memory");
        for (i=0; i<(*num_entries); i++) {
@@ -866,7 +866,7 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
        if (*num_entries == 0)
                goto do_cached;
 
-       (*info) = talloc(mem_ctx, sizeof(**info) * (*num_entries));
+       (*info) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries);
        if (! (*info))
                smb_panic("enum_dom_groups out of memory");
        for (i=0; i<(*num_entries); i++) {
@@ -1156,7 +1156,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
        if (*num_groups == 0)
                goto do_cached;
 
-       (*user_gids) = talloc(mem_ctx, sizeof(**user_gids) * (*num_groups));
+       (*user_gids) = TALLOC_ARRAY(mem_ctx, DOM_SID *, *num_groups);
        if (! (*user_gids))
                smb_panic("lookup_usergroups out of memory");
        for (i=0; i<(*num_groups); i++) {
@@ -1227,9 +1227,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
        if (*num_names == 0)
                goto do_cached;
 
-       (*sid_mem) = talloc(mem_ctx, sizeof(**sid_mem) * (*num_names));
-       (*names) = talloc(mem_ctx, sizeof(**names) * (*num_names));
-       (*name_types) = talloc(mem_ctx, sizeof(**name_types) * (*num_names));
+       (*sid_mem) = TALLOC_ARRAY(mem_ctx, DOM_SID *, *num_names);
+       (*names) = TALLOC_ARRAY(mem_ctx, char *, *num_names);
+       (*name_types) = TALLOC_ARRAY(mem_ctx, uint32, *num_names);
 
        if (! (*sid_mem) || ! (*names) || ! (*name_types)) {
                smb_panic("lookup_groupmem out of memory");
index c9aef2905f254bdee3f3768d719647b7d4050cf6..1843ec188b03479bfa058f37e091b751f359e699 100644 (file)
@@ -432,7 +432,7 @@ static BOOL add_one_dc_unique(TALLOC_CTX *mem_ctx, const char *domain_name,
        if (!NT_STATUS_IS_OK(check_negative_conn_cache(domain_name, dcname)))
                return False;
 
-       *dcs = talloc_realloc(mem_ctx, *dcs, ((*num)+1) * sizeof(**dcs));
+       *dcs = TALLOC_REALLOC_ARRAY(mem_ctx, *dcs, struct dc_name_ip, (*num)+1);
 
        if (*dcs == NULL)
                return False;
@@ -448,7 +448,7 @@ static BOOL add_string_to_array(TALLOC_CTX *mem_ctx,
 {
        char *dup_str = talloc_strdup(mem_ctx, str);
 
-       *array = talloc_realloc(mem_ctx, *array, ((*num)+1) * sizeof(**array));
+       *array = TALLOC_REALLOC_ARRAY(mem_ctx, *array, char *, (*num)+1);
 
        if ((*array == NULL) || (dup_str == NULL))
                return False;
@@ -462,7 +462,7 @@ static BOOL add_sockaddr_to_array(TALLOC_CTX *mem_ctx,
                                  struct in_addr ip, uint16 port,
                                  struct sockaddr_in **addrs, int *num)
 {
-       *addrs = talloc_realloc(mem_ctx, *addrs, ((*num)+1) * sizeof(**addrs));
+       *addrs = TALLOC_REALLOC_ARRAY(mem_ctx, *addrs, struct sockaddr_in, (*num)+1);
 
        if (*addrs == NULL)
                return False;
@@ -753,7 +753,7 @@ static NTSTATUS new_cm_connection(struct winbindd_domain *domain, const char *pi
        struct winbindd_cm_conn *conn;
        NTSTATUS result;
 
-       if (!(conn = malloc(sizeof(*conn))))
+       if (!(conn = SMB_MALLOC_P(struct winbindd_cm_conn)))
                return NT_STATUS_NO_MEMORY;
                
        ZERO_STRUCTP(conn);
index d4ec6e586db29510a28252ac9de961ea3cf63492..587507ee29046c65960e87e07fc16e8b8538a957 100644 (file)
@@ -117,7 +117,7 @@ void dual_send_request(struct winbindd_cli_state *state)
 
        if (!background_process) return;
 
-       list = malloc(sizeof(*list));
+       list = SMB_MALLOC_P(struct dual_list);
        if (!list) return;
 
        list->next = NULL;
index 7eb0585c374f27385bb65ebbe6f3177131bbb543..4b49c1873e2425974512436faf3b1438e4010360 100644 (file)
@@ -47,7 +47,7 @@ static int gr_mem_buffer( char **buffer, char **members, int num_members )
        for ( i=0; i<num_members; i++ )
                len += strlen(members[i])+1;
 
-       *buffer = (char*)smb_xmalloc(len);
+       *buffer = SMB_XMALLOC_ARRAY(char, len);
        for ( i=0; i<num_members; i++ ) {
                snprintf( &(*buffer)[idx], len-idx, "%s,", members[i]);
                idx += strlen(members[i])+1;
@@ -194,7 +194,7 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
        /* Allocate buffer */
 
        if (!buf && buf_len != 0) {
-               if (!(buf = malloc(buf_len))) {
+               if (!(buf = SMB_MALLOC(buf_len))) {
                        DEBUG(1, ("out of memory\n"));
                        result = False;
                        goto done;
@@ -457,8 +457,7 @@ enum winbindd_result winbindd_setgrent(struct winbindd_cli_state *state)
                }
                                                
                
-               if ((domain_state = (struct getent_state *)
-                    malloc(sizeof(struct getent_state))) == NULL) {
+               if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL) {
                        DEBUG(1, ("winbindd_setgrent: malloc failed for domain_state!\n"));
                        return WINBINDD_ERROR;
                }
@@ -542,7 +541,7 @@ static BOOL get_sam_group_entries(struct getent_state *ent)
        /* Copy entries into return buffer */
 
        if (num_entries) {
-               if ( !(name_list = malloc(sizeof(struct acct_info) * num_entries)) ) {
+               if ( !(name_list = SMB_MALLOC_ARRAY(struct acct_info, num_entries)) ) {
                        DEBUG(0,("get_sam_group_entries: Failed to malloc memory for %d domain groups!\n", 
                                num_entries));
                        result = False;
@@ -573,7 +572,7 @@ static BOOL get_sam_group_entries(struct getent_state *ent)
                /* Copy entries into return buffer */
 
                if ( num_entries ) {
-                       if ( !(tmp_name_list = Realloc( name_list, sizeof(struct acct_info) * (ent->num_sam_entries+num_entries))) )
+                       if ( !(tmp_name_list = SMB_REALLOC_ARRAY( name_list, struct acct_info, ent->num_sam_entries+num_entries)) )
                        {
                                DEBUG(0,("get_sam_group_entries: Failed to realloc more memory for %d local groups!\n", 
                                        num_entries));
@@ -625,8 +624,7 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
 
        num_groups = MIN(MAX_GETGRENT_GROUPS, state->request.data.num_entries);
 
-       if ((state->response.extra_data = 
-            malloc(num_groups * sizeof(struct winbindd_gr))) == NULL)
+       if ((state->response.extra_data = SMB_MALLOC_ARRAY(struct winbindd_gr, num_groups)) == NULL)
                return WINBINDD_ERROR;
 
        memset(state->response.extra_data, '\0',
@@ -746,9 +744,7 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
 
                if (result) {
                        /* Append to group membership list */
-                       new_gr_mem_list = Realloc(
-                               gr_mem_list,
-                               gr_mem_list_len + gr_mem_len);
+                       new_gr_mem_list = SMB_REALLOC( gr_mem_list, gr_mem_list_len + gr_mem_len);
 
                        if (!new_gr_mem_list && (group_list[group_list_ndx].num_gr_mem != 0)) {
                                DEBUG(0, ("out of memory\n"));
@@ -799,7 +795,7 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
        if (group_list_ndx == 0)
                goto done;
 
-       new_extra_data = Realloc(
+       new_extra_data = SMB_REALLOC(
                state->response.extra_data,
                group_list_ndx * sizeof(struct winbindd_gr) + gr_mem_list_len);
 
@@ -880,7 +876,7 @@ enum winbindd_result winbindd_list_groups(struct winbindd_cli_state *state)
                
                /* Allocate some memory for extra data.  Note that we limit
                   account names to sizeof(fstring) = 128 characters.  */               
-                ted = Realloc(extra_data, sizeof(fstring) * total_entries);
+                ted = SMB_REALLOC(extra_data, sizeof(fstring) * total_entries);
  
                if (!ted) {
                        DEBUG(0,("failed to enlarge buffer!\n"));
@@ -1151,12 +1147,12 @@ static void add_sid_to_parray_unique(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
                        return;
        }
 
-       *sids = talloc_realloc(mem_ctx, *sids, sizeof(**sids) * (*num_sids+1));
+       *sids = TALLOC_REALLOC_ARRAY(mem_ctx, *sids, DOM_SID *, *num_sids+1);
 
        if (*sids == NULL)
                return;
 
-       (*sids)[*num_sids] = talloc(mem_ctx, sizeof(DOM_SID));
+       (*sids)[*num_sids] = TALLOC_P(mem_ctx, DOM_SID);
        sid_copy((*sids)[*num_sids], sid);
        *num_sids += 1;
        return;
@@ -1259,7 +1255,7 @@ enum winbindd_result winbindd_getusersids(struct winbindd_cli_state *state)
        }
 
        /* build the reply */
-       ret = malloc(ret_size);
+       ret = SMB_MALLOC(ret_size);
        if (!ret) goto done;
        ofs = 0;
        for (i = 0; i < num_groups; i++) {
index 18478992f3e1714c43cdce3a909a237bbb29e08a..bb30a7029e16247b0d79f38698dad47ead6ca0be 100644 (file)
@@ -128,7 +128,7 @@ enum winbindd_result winbindd_list_trusted_domains(struct winbindd_cli_state
                /* Add domain to list */
 
                total_entries++;
-               ted = Realloc(extra_data, sizeof(fstring) * 
+               ted = SMB_REALLOC(extra_data, sizeof(fstring) * 
                               total_entries);
 
                if (!ted) {
@@ -168,7 +168,7 @@ enum winbindd_result winbindd_show_sequence(struct winbindd_cli_state *state)
        state->request.domain_name[sizeof(state->request.domain_name)-1]='\0';  
        which_domain = state->request.domain_name;
 
-       extra_data = strdup("");
+       extra_data = SMB_STRDUP("");
 
        /* this makes for a very simple data format, and is easily parsable as well
           if that is ever needed */
@@ -296,7 +296,7 @@ enum winbindd_result winbindd_priv_pipe_dir(struct winbindd_cli_state *state)
 
        DEBUG(3, ("[%5lu]: request location of privileged pipe\n", (unsigned long)state->pid));
        
-       state->response.extra_data = strdup(get_winbind_priv_pipe_dir());
+       state->response.extra_data = SMB_STRDUP(get_winbind_priv_pipe_dir());
        if (!state->response.extra_data)
                return WINBINDD_ERROR;
 
index e13649afe15085470919bf5d16f3c8aa6551bf7d..f7d3ac5aa41747ab8295edd5aa66d7c48127a852 100644 (file)
@@ -43,7 +43,7 @@ static NTSTATUS append_info3_as_ndr(TALLOC_CTX *mem_ctx,
        }
 
        size = prs_data_size(&ps);
-       state->response.extra_data = malloc(size);
+       state->response.extra_data = SMB_MALLOC(size);
        if (!state->response.extra_data) {
                prs_mem_free(&ps);
                return NT_STATUS_NO_MEMORY;
@@ -78,7 +78,7 @@ static NTSTATUS check_info3_in_group(TALLOC_CTX *mem_ctx,
                return NT_STATUS_INVALID_PARAMETER;
        }
 
-       all_sids = talloc(mem_ctx, sizeof(DOM_SID) * num_all_sids);
+       all_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, num_all_sids);
        if (!all_sids)
                return NT_STATUS_NO_MEMORY;
 
@@ -363,7 +363,7 @@ done:
        if ( NT_STATUS_IS_OK(result) &&
             (state->request.flags & WBFLAG_PAM_AFS_TOKEN) ) {
 
-               char *afsname = strdup(lp_afs_username_map());
+               char *afsname = SMB_STRDUP(lp_afs_username_map());
                char *cell;
 
                if (afsname == NULL) goto no_token;
@@ -600,7 +600,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
 
                        DEBUG(5, ("Setting unix username to [%s]\n", username_out));
 
-                       state->response.extra_data = strdup(username_out);
+                       state->response.extra_data = SMB_STRDUP(username_out);
                        if (!state->response.extra_data) {
                                result = NT_STATUS_NO_MEMORY;
                                goto done;
index 3adb81caa354eaffc63ec5d455e91b3e705d5482..a208186b5f5205f0828ea1f96ff50dcae7ff47b5 100644 (file)
@@ -217,8 +217,7 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
                return NT_STATUS_OK;
        }
 
-       talloced_info = (struct acct_info *)
-               talloc_memdup(mem_ctx, *info,
+       talloced_info = (struct acct_info *)TALLOC_MEMDUP(mem_ctx, *info,
                              *num_entries * sizeof(struct acct_info));
 
        SAFE_FREE(*info);
@@ -332,15 +331,12 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
                nt_status = secrets_get_trusted_domains(mem_ctx, &enum_ctx, 1,
                                                        &num_sec_domains,
                                                        &domains);
-               *names = talloc_realloc(mem_ctx, *names,
-                                       sizeof(*names) *
-                                       (num_sec_domains + *num_domains));
-               *alt_names = talloc_realloc(mem_ctx, *alt_names,
-                                           sizeof(*alt_names) *
-                                           (num_sec_domains + *num_domains));
-               *dom_sids = talloc_realloc(mem_ctx, *dom_sids,
-                                          sizeof(**dom_sids) *
-                                          (num_sec_domains + *num_domains));
+               *names = TALLOC_REALLOC_ARRAY(mem_ctx, *names, char *,
+                                       num_sec_domains + *num_domains);
+               *alt_names = TALLOC_REALLOC_ARRAY(mem_ctx, *alt_names, char *,
+                                           num_sec_domains + *num_domains);
+               *dom_sids = TALLOC_REALLOC_ARRAY(mem_ctx, *dom_sids, DOM_SID,
+                                          num_sec_domains + *num_domains);
 
                for (i=0; i< num_sec_domains; i++) {
                        if (pull_ucs2_talloc(mem_ctx, &(*names)[*num_domains],
index ba24749fbef07cd036c48a9e6580d14d6148815f..de7f2ff76fbec30178b2b055a630b2c347afc471 100644 (file)
@@ -98,8 +98,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
 
                *num_entries += num_dom_users;
 
-               *info = talloc_realloc( mem_ctx, *info, 
-                       (*num_entries) * sizeof(WINBIND_USERINFO));
+               *info = TALLOC_REALLOC_ARRAY( mem_ctx, *info, WINBIND_USERINFO, *num_entries);
 
                if (!(*info)) {
                        result = NT_STATUS_NO_MEMORY;
@@ -192,8 +191,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
                        break;
                }
 
-               (*info) = talloc_realloc(mem_ctx, *info, 
-                                        sizeof(**info) * ((*num_entries) + count));
+               (*info) = TALLOC_REALLOC_ARRAY(mem_ctx, *info, struct acct_info, (*num_entries) + count);
                if (! *info) {
                        talloc_destroy(mem_ctx2);
                        cli_samr_close(hnd->cli, mem_ctx, &dom_pol);
@@ -255,8 +253,7 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
                        break;
                }
 
-               (*info) = talloc_realloc(mem_ctx, *info, 
-                                        sizeof(**info) * ((*num_entries) + count));
+               (*info) = TALLOC_REALLOC_ARRAY(mem_ctx, *info, struct acct_info, (*num_entries) + count);
                if (! *info) {
                        talloc_destroy(mem_ctx2);
                        cli_samr_close(hnd->cli, mem_ctx, &dom_pol);
@@ -491,7 +488,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
                        
                *num_groups = user->num_groups;
                                
-               (*user_grpsids) = talloc(mem_ctx, sizeof(DOM_SID*) * (*num_groups));
+               (*user_grpsids) = TALLOC_ARRAY(mem_ctx, DOM_SID*, *num_groups);
                for (i=0;i<(*num_groups);i++) {
                        (*user_grpsids)[i] = rid_to_talloced_sid(domain, mem_ctx, user->gids[i].g_rid);
                }
@@ -543,7 +540,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
        if (!NT_STATUS_IS_OK(result) || (*num_groups) == 0)
                goto done;
 
-       (*user_grpsids) = talloc(mem_ctx, sizeof(DOM_SID*) * (*num_groups));
+       (*user_grpsids) = TALLOC_ARRAY(mem_ctx, DOM_SID *, *num_groups);
        if (!(*user_grpsids)) {
                result = NT_STATUS_NO_MEMORY;
                goto done;
@@ -643,9 +640,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
 
 #define MAX_LOOKUP_RIDS 900
 
-        *names = talloc_zero(mem_ctx, *num_names * sizeof(char *));
-        *name_types = talloc_zero(mem_ctx, *num_names * sizeof(uint32));
-        *sid_mem = talloc_zero(mem_ctx, *num_names * sizeof(DOM_SID *));
+        *names = TALLOC_ZERO_ARRAY(mem_ctx, char *, *num_names);
+        *name_types = TALLOC_ZERO_ARRAY(mem_ctx, uint32, *num_names);
+        *sid_mem = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID *, *num_names);
 
        for (j=0;j<(*num_names);j++) {
                (*sid_mem)[j] = rid_to_talloced_sid(domain, mem_ctx, (rid_mem)[j]);
index 249b9ccd8eb32d52952ded09709747fc3bf47df6..fc3fe0f9631791d4b1bd46c4ed89d9f081c33268 100644 (file)
@@ -351,8 +351,7 @@ enum winbindd_result winbindd_setpwent(struct winbindd_cli_state *state)
                                                
                /* Create a state record for this domain */
                 
-               if ((domain_state = (struct getent_state *)
-                    malloc(sizeof(struct getent_state))) == NULL)
+               if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL)
                        return WINBINDD_ERROR;
                 
                ZERO_STRUCTP(domain_state);
@@ -429,10 +428,7 @@ static BOOL get_sam_user_entries(struct getent_state *ent)
        if (num_entries) {
                struct getpwent_user *tnl;
                
-               tnl = (struct getpwent_user *)Realloc(name_list, 
-                                                     sizeof(struct getpwent_user) *
-                                                     (ent->num_sam_entries + 
-                                                      num_entries));
+               tnl = SMB_REALLOC_ARRAY(name_list, struct getpwent_user, ent->num_sam_entries + num_entries);
                
                if (!tnl) {
                        DEBUG(0,("get_sam_user_entries realloc failed.\n"));
@@ -498,8 +494,7 @@ enum winbindd_result winbindd_getpwent(struct winbindd_cli_state *state)
 
        num_users = MIN(MAX_GETPWENT_USERS, state->request.data.num_entries);
        
-       if ((state->response.extra_data = 
-            malloc(num_users * sizeof(struct winbindd_pw))) == NULL)
+       if ((state->response.extra_data = SMB_MALLOC_ARRAY(struct winbindd_pw, num_users)) == NULL)
                return WINBINDD_ERROR;
 
        memset(state->response.extra_data, 0, num_users * 
@@ -624,7 +619,7 @@ enum winbindd_result winbindd_list_users(struct winbindd_cli_state *state)
                /* Allocate some memory for extra data */
                total_entries += num_entries;
                        
-               ted = Realloc(extra_data, sizeof(fstring) * total_entries);
+               ted = SMB_REALLOC(extra_data, sizeof(fstring) * total_entries);
                        
                if (!ted) {
                        DEBUG(0,("failed to enlarge buffer!\n"));
index a96f652c6172033fae7948004e726227080bfafb..7cbcba124535653ce5bc326b2897e4dbb4c39427 100644 (file)
@@ -139,7 +139,7 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
         
        /* Create new domain entry */
 
-       if ((domain = (struct winbindd_domain *)malloc(sizeof(*domain))) == NULL)
+       if ((domain = SMB_MALLOC_P(struct winbindd_domain)) == NULL)
                return NULL;
 
        /* Fill in fields */
@@ -777,7 +777,7 @@ DOM_SID *rid_to_talloced_sid(struct winbindd_domain *domain,
                                    uint32 rid) 
 {
        DOM_SID *sid;
-       sid = talloc(mem_ctx, sizeof(*sid));
+       sid = TALLOC_P(mem_ctx, DOM_SID);
        if (!sid) {
                smb_panic("rid_to_to_talloced_sid: talloc for DOM_SID failed!\n");
        }
index 107c9d264cd538299834745ed1cbd50e9d7be41e..f199ebcb4371c97a5fcbb0168675558edbc2c01b 100644 (file)
@@ -97,7 +97,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
        if (resolve_wins(name,0x20,&ret,count)) {
                if ( count == 0 )
                        return NULL;
-               if ( (return_ip = (struct in_addr *)malloc((*count)*sizeof(struct in_addr))) == NULL ) {
+               if ( (return_ip = SMB_MALLOC_ARRAY(struct in_addr, *count)) == NULL ) {
                        free( ret );
                        return NULL;
                }
index a1c4f4deec058c0e5291611b6403a196fec2dee1..8d26fc52971af77c903283a4617194136b4882ec 100644 (file)
@@ -101,7 +101,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
 
        /* always try with wins first */
        if (resolve_wins(name,0x00,&address,count)) {
-               if ( (ret = (struct in_addr *)malloc(sizeof(struct in_addr))) == NULL ) {
+               if ( (ret = SMB_MALLOC_P(struct in_addr)) == NULL ) {
                        free( address );
                        return NULL;
                }
index 95f09c70e41b2355d8d8693e20cdc548eb0caddf..d0bad3ff171ec7d2dec07c19b861611231230ec2 100644 (file)
@@ -2262,9 +2262,7 @@ static int add_a_service(const service *pservice, const char *name)
        if (i == iNumServices) {
                service **tsp;
                
-               tsp = (service **) Realloc(ServicePtrs,
-                                          sizeof(service *) *
-                                          num_to_alloc);
+               tsp = SMB_REALLOC_ARRAY(ServicePtrs, service *, num_to_alloc);
                                           
                if (!tsp) {
                        DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n"));
@@ -2272,8 +2270,7 @@ static int add_a_service(const service *pservice, const char *name)
                }
                else {
                        ServicePtrs = tsp;
-                       ServicePtrs[iNumServices] =
-                               (service *) malloc(sizeof(service));
+                       ServicePtrs[iNumServices] = SMB_MALLOC_P(service);
                }
                if (!ServicePtrs[iNumServices]) {
                        DEBUG(0,("add_a_service: out of memory!\n"));
@@ -2565,16 +2562,16 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
                        if (strcmp(pdata->key, data->key) == 0) {
                                string_free(&pdata->value);
                                str_list_free(&data->list);
-                               pdata->value = strdup(data->value);
+                               pdata->value = SMB_STRDUP(data->value);
                                not_added = False;
                                break;
                        }
                        pdata = pdata->next;
                }
                if (not_added) {
-                   paramo = smb_xmalloc(sizeof(param_opt_struct));
-                   paramo->key = strdup(data->key);
-                   paramo->value = strdup(data->value);
+                   paramo = SMB_XMALLOC_P(param_opt_struct);
+                   paramo->key = SMB_STRDUP(data->key);
+                   paramo->value = SMB_STRDUP(data->value);
                    paramo->list = NULL;
                    DLIST_ADD(pserviceDest->param_opt, paramo);
                }
@@ -2649,16 +2646,16 @@ static void add_to_file_list(const char *fname, const char *subfname)
        }
 
        if (!f) {
-               f = (struct file_lists *)malloc(sizeof(file_lists[0]));
+               f = SMB_MALLOC_P(struct file_lists);
                if (!f)
                        return;
                f->next = file_lists;
-               f->name = strdup(fname);
+               f->name = SMB_STRDUP(fname);
                if (!f->name) {
                        SAFE_FREE(f);
                        return;
                }
-               f->subfname = strdup(subfname);
+               f->subfname = SMB_STRDUP(subfname);
                if (!f->subfname) {
                        SAFE_FREE(f);
                        return;
@@ -2708,7 +2705,7 @@ BOOL lp_file_list_changed(void)
                                  ctime(&mod_time)));
                        f->modtime = mod_time;
                        SAFE_FREE(f->subfname);
-                       f->subfname = strdup(n2);
+                       f->subfname = SMB_STRDUP(n2);
                        return (True);
                }
                f = f->next;
@@ -3050,7 +3047,7 @@ static void init_copymap(service * pservice)
 {
        int i;
        SAFE_FREE(pservice->copymap);
-       pservice->copymap = (BOOL *)malloc(sizeof(BOOL) * NUMPARAMETERS);
+       pservice->copymap = SMB_MALLOC_ARRAY(BOOL,NUMPARAMETERS);
        if (!pservice->copymap)
                DEBUG(0,
                      ("Couldn't allocate copymap!! (size %d)\n",
@@ -3104,16 +3101,16 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                                if (strcmp(data->key, param_key) == 0) {
                                        string_free(&data->value);
                                        str_list_free(&data->list);
-                                       data->value = strdup(pszParmValue);
+                                       data->value = SMB_STRDUP(pszParmValue);
                                        not_added = False;
                                        break;
                                }
                                data = data->next;
                        }
                        if (not_added) {
-                               paramo = smb_xmalloc(sizeof(param_opt_struct));
-                               paramo->key = strdup(param_key);
-                               paramo->value = strdup(pszParmValue);
+                               paramo = SMB_XMALLOC_P(param_opt_struct);
+                               paramo->key = SMB_STRDUP(param_key);
+                               paramo->value = SMB_STRDUP(pszParmValue);
                                paramo->list = NULL;
                                if (snum < 0) {
                                        DLIST_ADD(Globals.param_opt, paramo);
@@ -3656,7 +3653,7 @@ static void lp_add_auto_services(char *str)
        if (!str)
                return;
 
-       s = strdup(str);
+       s = SMB_STRDUP(str);
        if (!s)
                return;
 
@@ -3755,7 +3752,7 @@ static void lp_save_defaults(void)
                        case P_STRING:
                        case P_USTRING:
                                if (parm_table[i].ptr) {
-                                       parm_table[i].def.svalue = strdup(*(char **)parm_table[i].ptr);
+                                       parm_table[i].def.svalue = SMB_STRDUP(*(char **)parm_table[i].ptr);
                                } else {
                                        parm_table[i].def.svalue = NULL;
                                }
@@ -3763,7 +3760,7 @@ static void lp_save_defaults(void)
                        case P_GSTRING:
                        case P_UGSTRING:
                                if (parm_table[i].ptr) {
-                                       parm_table[i].def.svalue = strdup((char *)parm_table[i].ptr);
+                                       parm_table[i].def.svalue = SMB_STRDUP((char *)parm_table[i].ptr);
                                } else {
                                        parm_table[i].def.svalue = NULL;
                                }
index 892e5476cc035299a5e39744b3f172a15ee8c67e..2d6fe5671667ecd9affe2407e184f030226337f1 100644 (file)
@@ -238,7 +238,7 @@ static BOOL Section( myFILE *InFile, BOOL (*sfunc)(const char *) )
       {
       char *tb;
       
-      tb = Realloc( bufr, bSize +BUFR_INC );
+      tb = SMB_REALLOC( bufr, bSize +BUFR_INC );
       if( NULL == tb )
         {
         DEBUG(0, ("%s Memory re-allocation failure.", func) );
@@ -335,7 +335,7 @@ static BOOL Parameter( myFILE *InFile, BOOL (*pfunc)(const char *, const char *)
       {
       char *tb;
       
-      tb = Realloc( bufr, bSize + BUFR_INC );
+      tb = SMB_REALLOC( bufr, bSize + BUFR_INC );
       if( NULL == tb )
         {
         DEBUG(0, ("%s Memory re-allocation failure.", func) );
@@ -403,7 +403,7 @@ static BOOL Parameter( myFILE *InFile, BOOL (*pfunc)(const char *, const char *)
       {
       char *tb;
       
-      tb = Realloc( bufr, bSize + BUFR_INC );
+      tb = SMB_REALLOC( bufr, bSize + BUFR_INC );
       if( NULL == tb )
         {
         DEBUG(0, ("%s Memory re-allocation failure.", func) );
@@ -521,7 +521,7 @@ static myFILE *OpenConfFile( const char *FileName )
   int lvl = in_client?1:0;
   myFILE *ret;
 
-  ret = (myFILE *)malloc(sizeof(*ret));
+  ret = SMB_MALLOC_P(myFILE);
   if (!ret) return NULL;
 
   ret->buf = file_load(FileName, &ret->size);
@@ -572,7 +572,7 @@ BOOL pm_process( const char *FileName,
   else                                        /* If we don't have a buffer   */
     {                                         /* allocate one, then parse,   */
     bSize = BUFR_INC;                         /* then free.                  */
-    bufr = (char *)malloc( bSize );
+    bufr = (char *)SMB_MALLOC( bSize );
     if( NULL == bufr )
       {
       DEBUG(0,("%s memory allocation failure.\n", func));
index 0d782912b17d02589a943fac45ec7a3b3f2b2779..d82cfcc56017a4c830326d7a63b678d1ae96f897 100644 (file)
@@ -72,7 +72,7 @@ LOGIN_CACHE * login_cache_read(SAM_ACCOUNT *sampass)
        if (!login_cache_init())
                return NULL;
 
-       keybuf.dptr = strdup(pdb_get_nt_username(sampass));
+       keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
        if (!keybuf.dptr || !strlen(keybuf.dptr)) {
                SAFE_FREE(keybuf.dptr);
                return NULL;
@@ -84,7 +84,7 @@ LOGIN_CACHE * login_cache_read(SAM_ACCOUNT *sampass)
        databuf = tdb_fetch(cache, keybuf);
        SAFE_FREE(keybuf.dptr);
 
-       if (!(entry = malloc(sizeof(LOGIN_CACHE)))) {
+       if (!(entry = SMB_MALLOC_P(LOGIN_CACHE))) {
                DEBUG(1, ("Unable to allocate cache entry buffer!\n"));
                SAFE_FREE(databuf.dptr);
                return NULL;
@@ -117,7 +117,7 @@ BOOL login_cache_write(const SAM_ACCOUNT *sampass, LOGIN_CACHE entry)
        if (!login_cache_init())
                return False;
 
-       keybuf.dptr = strdup(pdb_get_nt_username(sampass));
+       keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
        if (!keybuf.dptr || !strlen(keybuf.dptr)) {
                SAFE_FREE(keybuf.dptr);
                return False;
@@ -132,7 +132,7 @@ BOOL login_cache_write(const SAM_ACCOUNT *sampass, LOGIN_CACHE entry)
                         entry.acct_ctrl,
                         entry.bad_password_count,
                         entry.bad_password_time);
-       databuf.dptr = malloc(databuf.dsize);
+       databuf.dptr = SMB_MALLOC(databuf.dsize);
        if (!databuf.dptr) {
                SAFE_FREE(keybuf.dptr);
                return False;
@@ -163,7 +163,7 @@ BOOL login_cache_delentry(const SAM_ACCOUNT *sampass)
        if (!login_cache_init()) 
                return False;   
 
-       keybuf.dptr = strdup(pdb_get_nt_username(sampass));
+       keybuf.dptr = SMB_STRDUP(pdb_get_nt_username(sampass));
        if (!keybuf.dptr || !strlen(keybuf.dptr)) {
                SAFE_FREE(keybuf.dptr);
                return False;
index 4df497461a4fa78e52e4667cb67ea6a09f49344f..8a3d35defd95cc9b2e302f43b0d454497ff5e98b 100644 (file)
@@ -208,7 +208,7 @@ static void store_uid_sid_cache(const DOM_SID *psid, uid_t uid)
                }
        }
 
-       pc = (struct uid_sid_cache *)malloc(sizeof(struct uid_sid_cache));
+       pc = SMB_MALLOC_P(struct uid_sid_cache);
        if (!pc)
                return;
        pc->uid = uid;
@@ -282,7 +282,7 @@ static void store_gid_sid_cache(const DOM_SID *psid, gid_t gid)
                }
        }
 
-       pc = (struct gid_sid_cache *)malloc(sizeof(struct gid_sid_cache));
+       pc = SMB_MALLOC_P(struct gid_sid_cache);
        if (!pc)
                return;
        pc->gid = gid;
index ce1354ce81830b995b701ec5ece29da981482b42..ae0b16273f207ad7dd8d6beced8fa0f619a91e47 100644 (file)
@@ -83,7 +83,7 @@ static DOM_SID *pdb_generate_sam_sid(void)
        BOOL is_dc = False;
        DOM_SID *sam_sid;
        
-       if(!(sam_sid=(DOM_SID *)malloc(sizeof(DOM_SID))))
+       if(!(sam_sid=SMB_MALLOC_P(DOM_SID)))
                return NULL;
                        
        generate_wellknown_sids();
index 35317b9816481176ac6417cb4fa543676dda4e95..aeea4316f381b0d942282f639fc8bb12bdd8b55d 100644 (file)
@@ -133,7 +133,7 @@ NTSTATUS pdb_init_sam_talloc(TALLOC_CTX *mem_ctx, SAM_ACCOUNT **user)
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       *user=(SAM_ACCOUNT *)talloc(mem_ctx, sizeof(SAM_ACCOUNT));
+       *user=TALLOC_P(mem_ctx, SAM_ACCOUNT);
 
        if (*user==NULL) {
                DEBUG(0,("pdb_init_sam_talloc: error while allocating memory\n"));
@@ -1893,7 +1893,7 @@ BOOL init_sam_from_buffer_v2(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
        /* Change from V1 is addition of password history field. */
        account_policy_get(AP_PASSWORD_HISTORY, &pwHistLen);
        if (pwHistLen) {
-               char *pw_hist = malloc(pwHistLen * PW_HISTORY_ENTRY_LEN);
+               char *pw_hist = SMB_MALLOC(pwHistLen * PW_HISTORY_ENTRY_LEN);
                if (!pw_hist) {
                        ret = False;
                        goto done;
@@ -2172,7 +2172,7 @@ uint32 init_buffer_from_sam_v2 (uint8 **buf, const SAM_ACCOUNT *sampass, BOOL si
        }
 
        /* malloc the space needed */
-       if ( (*buf=(uint8*)malloc(len)) == NULL) {
+       if ( (*buf=(uint8*)SMB_MALLOC(len)) == NULL) {
                DEBUG(0,("init_buffer_from_sam_v2: Unable to malloc() memory for buffer!\n"));
                return (-1);
        }
index 51c408e6d51b4bd5998a6f92d9ffa52277356833..2ca76384721e7de8696b2773c9d0385729329e39 100644 (file)
@@ -1224,7 +1224,7 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext)
 
                                if (current_history_len < pwHistLen) {
                                        /* Ensure we have space for the needed history. */
-                                       uchar *new_history = talloc(sampass->mem_ctx,
+                                       uchar *new_history = TALLOC(sampass->mem_ctx,
                                                                pwHistLen*PW_HISTORY_ENTRY_LEN);
                                        /* And copy it into the new buffer. */
                                        if (current_history_len) {
index f18ef616f0b52d898f7f3daedd455e9a87a9c502..9bc38fb44491c5a5a76ca9d4f81a67d3e2251d22 100644 (file)
@@ -98,7 +98,7 @@ NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function in
                return NT_STATUS_OBJECT_NAME_COLLISION;
        }
 
-       entry = smb_xmalloc(sizeof(struct pdb_init_function_entry));
+       entry = SMB_XMALLOC_P(struct pdb_init_function_entry);
        entry->name = smb_xstrdup(name);
        entry->init = init;
 
@@ -711,7 +711,7 @@ static NTSTATUS make_pdb_context(struct pdb_context **context)
                return NT_STATUS_NO_MEMORY;
        }               
 
-       *context = talloc(mem_ctx, sizeof(**context));
+       *context = TALLOC_P(mem_ctx, struct pdb_context);
        if (!*context) {
                DEBUG(0, ("make_pdb_context: talloc failed!\n"));
                return NT_STATUS_NO_MEMORY;
@@ -1260,7 +1260,7 @@ static void pdb_default_endsampwent(struct pdb_methods *methods)
 
 NTSTATUS make_pdb_methods(TALLOC_CTX *mem_ctx, PDB_METHODS **methods) 
 {
-       *methods = talloc(mem_ctx, sizeof(struct pdb_methods));
+       *methods = TALLOC_P(mem_ctx, struct pdb_methods);
 
        if (!*methods) {
                return NT_STATUS_NO_MEMORY;
index 3ea291b611c1694e354f0ba478640c547e4846f6..a84b2f35b2848c52aa8969e92298209c559a55ab 100644 (file)
@@ -730,7 +730,7 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state,
                /* We can only store (sizeof(pstring)-1)/64 password history entries. */
                pwHistLen = MIN(pwHistLen, ((sizeof(temp)-1)/64));
 
-               if ((pwhist = malloc(pwHistLen * PW_HISTORY_ENTRY_LEN)) == NULL){
+               if ((pwhist = SMB_MALLOC(pwHistLen * PW_HISTORY_ENTRY_LEN)) == NULL){
                        DEBUG(0, ("init_sam_from_ldap: malloc failed!\n"));
                        return False;
                }
@@ -1266,9 +1266,9 @@ static void append_attr(char ***attr_list, const char *new_attr)
                ;
        }
 
-       (*attr_list) = Realloc((*attr_list), sizeof(**attr_list) * (i+2));
+       (*attr_list) = SMB_REALLOC_ARRAY((*attr_list), char *,  i+2);
        SMB_ASSERT((*attr_list) != NULL);
-       (*attr_list)[i] = strdup(new_attr);
+       (*attr_list)[i] = SMB_STRDUP(new_attr);
        (*attr_list)[i+1] = NULL;
 }
 
@@ -2644,7 +2644,7 @@ static NTSTATUS ldapsam_enum_group_mapping(struct pdb_methods *methods,
                        continue;
                }
 
-               mapt=(GROUP_MAP *)Realloc((*rmap), (entries+1)*sizeof(GROUP_MAP));
+               mapt=SMB_REALLOC_ARRAY((*rmap), GROUP_MAP, entries+1);
                if (!mapt) {
                        DEBUG(0,("ldapsam_enum_group_mapping: Unable to enlarge group map!\n"));
                        SAFE_FREE(*rmap);
@@ -2971,7 +2971,7 @@ static NTSTATUS pdb_init_ldapsam_common(PDB_CONTEXT *pdb_context, PDB_METHODS **
 
        /* TODO: Setup private data and free */
 
-       ldap_state = talloc_zero(pdb_context->mem_ctx, sizeof(*ldap_state));
+       ldap_state = TALLOC_ZERO_P(pdb_context->mem_ctx, struct ldapsam_privates);
        if (!ldap_state) {
                DEBUG(0, ("pdb_init_ldapsam_common: talloc() failed for ldapsam private_data!\n"));
                return NT_STATUS_NO_MEMORY;
index 805201615cea27cda84a82e7b5a60ae7267527fc..d75d0ed5c8ce735ee0972373cdaa480e3d286aa1 100644 (file)
@@ -551,7 +551,7 @@ static char *format_new_smbpasswd_entry(const struct smb_passwd *newpwd)
        new_entry_length = strlen(newpwd->smb_name) + 1 + 15 + 1 + 32 + 1 + 32 + 1 + 
                                NEW_PW_FORMAT_SPACE_PADDED_LEN + 1 + 13 + 2;
 
-       if((new_entry = (char *)malloc( new_entry_length )) == NULL) {
+       if((new_entry = (char *)SMB_MALLOC( new_entry_length )) == NULL) {
                DEBUG(0, ("format_new_smbpasswd_entry: Malloc failed adding entry for user %s.\n",
                        newpwd->smb_name ));
                return NULL;
@@ -1505,7 +1505,7 @@ static NTSTATUS pdb_init_smbpasswd(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_m
 
        /* Setup private data and free function */
 
-       privates = talloc_zero(pdb_context->mem_ctx, sizeof(struct smbpasswd_privates));
+       privates = TALLOC_ZERO_P(pdb_context->mem_ctx, struct smbpasswd_privates);
 
        if (!privates) {
                DEBUG(0, ("talloc() failed for smbpasswd private_data!\n"));
index 37e408a3873fd8e29ce83881b7198f9079ef33ba..820280bcbf6d28be262ff2a16475449fc3d226c8 100644 (file)
@@ -78,7 +78,7 @@ static void pdb_sql_int_field(struct pdb_sql_query *q, const char *name, int val
 
 char *sql_escape_string(const char *unesc)
 {
-       char *esc = malloc(strlen(unesc) * 2 + 3);
+       char *esc = SMB_MALLOC(strlen(unesc) * 2 + 3);
        size_t pos_unesc = 0, pos_esc = 0;
 
        for(pos_unesc = 0; unesc[pos_unesc]; pos_unesc++) {
@@ -475,7 +475,7 @@ char *sql_account_query_update(const char *location, const SAM_ACCOUNT *newpwd,
                                                                   " VALUES (%s", query.part2);
        }
 
-       ret = strdup(query.part1);
+       ret = SMB_STRDUP(query.part1);
        talloc_destroy(query.mem_ctx);
        return ret;
 }
index 5fb5ce389139e6b01b4c9e1a7c5ccb092472ad2f..c792d229b9af49ed45a8605b7c7b90fb39b86e41 100644 (file)
@@ -267,7 +267,7 @@ static int tdbsam_traverse_setpwent(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data,
        struct pwent_list *ptr;
        
        if ( strncmp(key.dptr, prefix, prefixlen) == 0 ) {
-               if ( !(ptr=(struct pwent_list*)malloc(sizeof(struct pwent_list))) ) {
+               if ( !(ptr=SMB_MALLOC_P(struct pwent_list)) ) {
                        DEBUG(0,("tdbsam_traverse_setpwent: Failed to malloc new entry for list\n"));
                        
                        /* just return 0 and let the traversal continue */
@@ -724,7 +724,7 @@ static NTSTATUS pdb_init_tdbsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_meth
        (*pdb_method)->update_sam_account = tdbsam_update_sam_account;
        (*pdb_method)->delete_sam_account = tdbsam_delete_sam_account;
 
-       tdb_state = talloc_zero(pdb_context->mem_ctx, sizeof(struct tdbsam_privates));
+       tdb_state = TALLOC_ZERO_P(pdb_context->mem_ctx, struct tdbsam_privates);
 
        if (!tdb_state) {
                DEBUG(0, ("talloc() failed for tdbsam private_data!\n"));
index 624817e32e0285364b8e90c9d28bdab9a55bb69d..69fc75a618cf40f0316a1b20865716b5d57b0ddd 100644 (file)
@@ -121,7 +121,7 @@ NTSTATUS privilege_enum_account_with_right(const char *right,
        *count = i;
 
        /* allocate and parse */
-       *sids = malloc(sizeof(DOM_SID) * *count);
+       *sids = SMB_MALLOC_ARRAY(DOM_SID, *count);
        if (! *sids) {
                return NT_STATUS_NO_MEMORY;
        }
@@ -154,7 +154,7 @@ static NTSTATUS privilege_set_accounts_with_right(const char *right,
        }
 
        /* allocate the maximum size that we might use */
-       data.dptr = malloc(count * ((MAXSUBAUTHS*11) + 30));
+       data.dptr = SMB_MALLOC(count * ((MAXSUBAUTHS*11) + 30));
        if (!data.dptr) {
                return NT_STATUS_NO_MEMORY;
        }
@@ -210,7 +210,7 @@ NTSTATUS privilege_add_account_right(const char *right,
        }
 
        /* add it in */
-       current_sids = Realloc(current_sids, sizeof(current_sids[0]) * (current_count+1));
+       current_sids = SMB_REALLOC_ARRAY(current_sids, DOM_SID, current_count+1);
        if (!current_sids) {
                privilege_unlock_right(right);
                return NT_STATUS_NO_MEMORY;
@@ -323,14 +323,14 @@ NTSTATUS privilege_enum_account_rights(DOM_SID *sid,
                right = key.dptr;
                
                if (privilege_sid_has_right(sid, right)) {
-                       (*rights) = (char **)Realloc(*rights,sizeof(char *) * ((*count)+1));
+                       (*rights) = SMB_REALLOC_ARRAY(*rights,char *, (*count)+1);
                        if (! *rights) {
                                safe_free(nextkey.dptr);
                                free(key.dptr);
                                return NT_STATUS_NO_MEMORY;
                        }
 
-                       (*rights)[*count] = strdup(right);
+                       (*rights)[*count] = SMB_STRDUP(right);
                        (*count)++;
                }
 
index 426217b82c5cb5206d2e8a9fe23b2e1c15305b7b..6be63e4f9d6f7301697d9cf5b12d2c81744556dc 100644 (file)
@@ -346,7 +346,7 @@ BOOL secrets_fetch_trusted_domain_password(const char *domain, char** pwd,
                        
        /* the trust's password */      
        if (pwd) {
-               *pwd = strdup(pass.pass);
+               *pwd = SMB_STRDUP(pass.pass);
                if (!*pwd) {
                        return False;
                }
@@ -577,7 +577,7 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
        size_t size, packed_size = 0;
        fstring dom_name;
        char *packed_pass;
-       struct trusted_dom_pass *pass = talloc_zero(ctx, sizeof(struct trusted_dom_pass));
+       struct trusted_dom_pass *pass = TALLOC_ZERO_P(ctx, struct trusted_dom_pass);
        NTSTATUS status;
 
        if (!secrets_init()) return NT_STATUS_ACCESS_DENIED;
@@ -599,7 +599,7 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
        DEBUG(5, ("secrets_get_trusted_domains: looking for %d domains, starting at index %d\n", 
                  max_num_domains, *enum_ctx));
 
-       *domains = talloc_zero(ctx, sizeof(**domains)*max_num_domains);
+       *domains = TALLOC_ZERO_ARRAY(ctx, TRUSTDOM *, max_num_domains);
 
        /* fetching trusted domains' data and collecting them in a list */
        keys = tdb_search_keys(tdb, pattern);
@@ -615,7 +615,7 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
                char *secrets_key;
                
                /* important: ensure null-termination of the key string */
-               secrets_key = strndup(k->node_key.dptr, k->node_key.dsize);
+               secrets_key = SMB_STRNDUP(k->node_key.dptr, k->node_key.dsize);
                if (!secrets_key) {
                        DEBUG(0, ("strndup failed!\n"));
                        return NT_STATUS_NO_MEMORY;
@@ -638,7 +638,7 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
                SAFE_FREE(secrets_key);
 
                if (idx >= start_idx && idx < start_idx + max_num_domains) {
-                       dom = talloc_zero(ctx, sizeof(*dom));
+                       dom = TALLOC_ZERO_P(ctx, TRUSTDOM);
                        if (!dom) {
                                /* free returned tdb record */
                                return NT_STATUS_NO_MEMORY;
index 7bc6da94c030871a992a408b1e3f322c2a3776d6..c93c3400bd00e45e4f4b46ffa07a6c5c1f69ea59 100644 (file)
@@ -106,16 +106,16 @@ static void init_sid_name_map (void)
                /* This is not lp_workgroup() for good reason:
                   it must stay around longer than the lp_*() 
                   strings do */
-               sid_name_map[i].name = strdup(lp_workgroup());
+               sid_name_map[i].name = SMB_STRDUP(lp_workgroup());
                sid_name_map[i].known_users = NULL;
                i++;
                sid_name_map[i].sid = get_global_sam_sid();
-               sid_name_map[i].name = strdup(global_myname());
+               sid_name_map[i].name = SMB_STRDUP(global_myname());
                sid_name_map[i].known_users = NULL;
                i++;
        } else {
                sid_name_map[i].sid = get_global_sam_sid();
-               sid_name_map[i].name = strdup(global_myname());
+               sid_name_map[i].name = SMB_STRDUP(global_myname());
                sid_name_map[i].known_users = NULL;
                i++;
        }
@@ -317,7 +317,7 @@ BOOL map_name_to_wellknown_sid(DOM_SID *sid, enum SID_NAME_USE *use, const char
 
 void add_sid_to_array(const DOM_SID *sid, DOM_SID **sids, int *num)
 {
-       *sids = Realloc(*sids, ((*num)+1) * sizeof(DOM_SID));
+       *sids = SMB_REALLOC_ARRAY(*sids, DOM_SID, (*num)+1);
 
        if (*sids == NULL)
                return;
index cd90cbb6f33edfe7059c5ad39079376dab1a204b..59306aa1047d3bc9853d3f993508a9a212a1b796 100644 (file)
@@ -40,7 +40,7 @@ static void add_auto_printers(void)
 {
        const char *p;
        int printers;
-       char *str = strdup(lp_auto_services());
+       char *str = SMB_STRDUP(lp_auto_services());
 
        if (!str) return;
 
index 77326bee3e42d3b4f9f63096a03b533e2e016049..0071d3d8c0d41d8794b0abaf4cc584741cd715a1 100644 (file)
@@ -99,7 +99,7 @@ again:
                                msg->len, msg->notify.data);
 
        if (buflen != len) {
-               buf = talloc_realloc(send_ctx, buf, len);
+               buf = TALLOC_REALLOC(send_ctx, buf, len);
                if (!buf)
                        return False;
                buflen = len;
@@ -140,7 +140,7 @@ static void print_notify_send_messages_to_printer(const char *printer, unsigned
        }
        offset += 4; /* For count. */
 
-       buf = talloc(send_ctx, offset);
+       buf = TALLOC(send_ctx, offset);
        if (!buf) {
                DEBUG(0,("print_notify_send_messages: Out of memory\n"));
                talloc_destroy_pool(send_ctx);
@@ -218,7 +218,7 @@ static BOOL copy_notify2_msg( SPOOLSS_NOTIFY_MSG *to, SPOOLSS_NOTIFY_MSG *from )
        memcpy( to, from, sizeof(SPOOLSS_NOTIFY_MSG) );
        
        if ( from->len ) {
-               to->notify.data = talloc_memdup(send_ctx, from->notify.data, from->len );
+               to->notify.data = TALLOC_MEMDUP(send_ctx, from->notify.data, from->len );
                if ( !to->notify.data ) {
                        DEBUG(0,("copy_notify2_msg: talloc_memdup() of size [%d] failed!\n", from->len ));
                        return False;
@@ -267,7 +267,7 @@ static void send_spoolss_notify2_msg(SPOOLSS_NOTIFY_MSG *msg)
 
        /* Store the message on the pending queue. */
 
-       pnqueue = talloc(send_ctx, sizeof(*pnqueue));
+       pnqueue = TALLOC_P(send_ctx, struct notify_queue);
        if (!pnqueue) {
                DEBUG(0,("send_spoolss_notify2_msg: Out of memory.\n"));
                return;
@@ -275,7 +275,7 @@ static void send_spoolss_notify2_msg(SPOOLSS_NOTIFY_MSG *msg)
 
        /* allocate a new msg structure and copy the fields */
        
-       if ( !(pnqueue->msg = (SPOOLSS_NOTIFY_MSG*)talloc(send_ctx, sizeof(SPOOLSS_NOTIFY_MSG))) ) {
+       if ( !(pnqueue->msg = TALLOC_P(send_ctx, SPOOLSS_NOTIFY_MSG)) ) {
                DEBUG(0,("send_spoolss_notify2_msg: talloc() of size [%lu] failed!\n", 
                        (unsigned long)sizeof(SPOOLSS_NOTIFY_MSG)));
                return;
@@ -309,7 +309,7 @@ static void send_notify_field_values(const char *sharename, uint32 type,
        if (!create_send_ctx())
                return;
 
-       msg = (struct spoolss_notify_msg *)talloc(send_ctx, sizeof(struct spoolss_notify_msg));
+       msg = TALLOC_P(send_ctx, struct spoolss_notify_msg);
        if (!msg)
                return;
 
@@ -338,7 +338,7 @@ static void send_notify_field_buffer(const char *sharename, uint32 type,
        if (!create_send_ctx())
                return;
 
-       msg = (struct spoolss_notify_msg *)talloc(send_ctx, sizeof(struct spoolss_notify_msg));
+       msg = TALLOC_P(send_ctx, struct spoolss_notify_msg);
        if (!msg)
                return;
 
@@ -535,7 +535,7 @@ BOOL print_notify_pid_list(const char *printername, TALLOC_CTX *mem_ctx, size_t
 
        num_pids = data.dsize / 8;
 
-       if ((pid_list = (pid_t *)talloc(mem_ctx, sizeof(pid_t) * num_pids)) == NULL) {
+       if ((pid_list = TALLOC_ARRAY(mem_ctx, pid_t, num_pids)) == NULL) {
                ret = False;
                goto done;
        }
index 2dc565c79c6b2488cbab7ae34f4c216eaef17c3d..b17ddb51caf5c346e0f074966a3bd8190d0c6d45 100644 (file)
@@ -531,7 +531,7 @@ int get_ntforms(nt_forms_struct **list)
                if (ret != dbuf.dsize) 
                        continue;
 
-               tl = Realloc(*list, sizeof(nt_forms_struct)*(n+1));
+               tl = SMB_REALLOC_ARRAY(*list, nt_forms_struct, n+1);
                if (!tl) {
                        DEBUG(0,("get_ntforms: Realloc fail.\n"));
                        return 0;
@@ -601,7 +601,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count)
        }
 
        if (update==False) {
-               if((tl=Realloc(*list, (n+1)*sizeof(nt_forms_struct))) == NULL) {
+               if((tl=SMB_REALLOC_ARRAY(*list, nt_forms_struct, n+1)) == NULL) {
                        DEBUG(0,("add_a_form: failed to enlarge forms list!\n"));
                        return False;
                }
@@ -710,7 +710,7 @@ int get_ntdrivers(fstring **list, const char *architecture, uint32 version)
                if (strncmp(kbuf.dptr, key, strlen(key)) != 0)
                        continue;
                
-               if((fl = Realloc(*list, sizeof(fstring)*(total+1))) == NULL) {
+               if((fl = SMB_REALLOC_ARRAY(*list, fstring, total+1)) == NULL) {
                        DEBUG(0,("get_ntdrivers: failed to enlarge list!\n"));
                        return -1;
                }
@@ -766,7 +766,7 @@ static int get_file_version(files_struct *fsp, char *fname,uint32 *major, uint32
        char    *buf = NULL;
        ssize_t byte_count;
 
-       if ((buf=malloc(PE_HEADER_SIZE)) == NULL) {
+       if ((buf=SMB_MALLOC(PE_HEADER_SIZE)) == NULL) {
                DEBUG(0,("get_file_version: PE file [%s] PE Header malloc failed bytes = %d\n",
                                fname, PE_HEADER_SIZE));
                goto error_exit;
@@ -822,7 +822,7 @@ static int get_file_version(files_struct *fsp, char *fname,uint32 *major, uint32
                        goto error_exit;
 
                SAFE_FREE(buf);
-               if ((buf=malloc(section_table_bytes)) == NULL) {
+               if ((buf=SMB_MALLOC(section_table_bytes)) == NULL) {
                        DEBUG(0,("get_file_version: PE file [%s] section table malloc failed bytes = %d\n",
                                        fname, section_table_bytes));
                        goto error_exit;
@@ -846,7 +846,7 @@ static int get_file_version(files_struct *fsp, char *fname,uint32 *major, uint32
                                        goto error_exit;
 
                                SAFE_FREE(buf);
-                               if ((buf=malloc(section_bytes)) == NULL) {
+                               if ((buf=SMB_MALLOC(section_bytes)) == NULL) {
                                        DEBUG(0,("get_file_version: PE file [%s] version malloc failed bytes = %d\n",
                                                        fname, section_bytes));
                                        goto error_exit;
@@ -906,7 +906,7 @@ static int get_file_version(files_struct *fsp, char *fname,uint32 *major, uint32
 
                /* Allocate a bit more space to speed up things */
                SAFE_FREE(buf);
-               if ((buf=malloc(VS_NE_BUF_SIZE)) == NULL) {
+               if ((buf=SMB_MALLOC(VS_NE_BUF_SIZE)) == NULL) {
                        DEBUG(0,("get_file_version: NE file [%s] malloc failed bytes  = %d\n",
                                        fname, PE_HEADER_SIZE));
                        goto error_exit;
@@ -1728,7 +1728,7 @@ static uint32 add_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 *driver)
        if (len != buflen) {
                char *tb;
 
-               tb = (char *)Realloc(buf, len);
+               tb = (char *)SMB_REALLOC(buf, len);
                if (!tb) {
                        DEBUG(0,("add_a_printer_driver_3: failed to enlarge buffer\n!"));
                        ret = -1;
@@ -1793,7 +1793,7 @@ static WERROR get_a_printer_driver_3_default(NT_PRINTER_DRIVER_INFO_LEVEL_3 **in
        fstrcpy(info.configfile, "");
        fstrcpy(info.helpfile, "");
 
-       if ((info.dependentfiles=(fstring *)malloc(2*sizeof(fstring))) == NULL)
+       if ((info.dependentfiles= SMB_MALLOC_ARRAY(fstring, 2)) == NULL)
                return WERR_NOMEM;
 
        memset(info.dependentfiles, '\0', 2*sizeof(fstring));
@@ -1850,8 +1850,7 @@ static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 **info_ptr,
        while (len < dbuf.dsize) {
                fstring *tddfs;
 
-               tddfs = (fstring *)Realloc(driver.dependentfiles,
-                                                        sizeof(fstring)*(i+2));
+               tddfs = SMB_REALLOC_ARRAY(driver.dependentfiles, fstring, i+2);
                if (tddfs == NULL) {
                        DEBUG(0,("get_a_printer_driver_3: failed to enlarge buffer!\n"));
                        break;
@@ -2133,7 +2132,7 @@ static WERROR update_a_printer_2(NT_PRINTER_INFO_LEVEL_2 *info)
        if (buflen != len) {
                char *tb;
 
-               tb = (char *)Realloc(buf, len);
+               tb = (char *)SMB_REALLOC(buf, len);
                if (!tb) {
                        DEBUG(0,("update_a_printer_2: failed to enlarge buffer!\n"));
                        ret = WERR_NOMEM;
@@ -2175,7 +2174,7 @@ NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename)
 {
 
        char adevice[MAXDEVICENAME];
-       NT_DEVICEMODE *nt_devmode = (NT_DEVICEMODE *)malloc(sizeof(NT_DEVICEMODE));
+       NT_DEVICEMODE *nt_devmode = SMB_MALLOC_P(NT_DEVICEMODE);
 
        if (nt_devmode == NULL) {
                DEBUG(0,("construct_nt_devicemode: malloc fail.\n"));
@@ -2395,7 +2394,7 @@ static int add_new_printer_key( NT_PRINTER_DATA *data, const char *name )
        
        /* allocate another slot in the NT_PRINTER_KEY array */
        
-       d = Realloc( data->keys, sizeof(NT_PRINTER_KEY)*(data->num_keys+1) );
+       d = SMB_REALLOC_ARRAY( data->keys, NT_PRINTER_KEY, data->num_keys+1);
        if ( d )
                data->keys = d;
        
@@ -2404,7 +2403,7 @@ static int add_new_printer_key( NT_PRINTER_DATA *data, const char *name )
        /* initialze new key */
        
        data->num_keys++;
-       data->keys[key_index].name = strdup( name );
+       data->keys[key_index].name = SMB_STRDUP( name );
        
        ZERO_STRUCTP( &data->keys[key_index].values );
        
@@ -2487,7 +2486,7 @@ uint32 get_printer_subkeys( NT_PRINTER_DATA *data, const char* key, fstring **su
 
                        /* found a match, so allocate space and copy the name */
                        
-                       if ( !(ptr = Realloc( subkeys_ptr, (num_subkeys+2)*sizeof(fstring))) ) {
+                       if ( !(ptr = SMB_REALLOC_ARRAY( subkeys_ptr, fstring, num_subkeys+2)) ) {
                                DEBUG(0,("get_printer_subkeys: Realloc failed for [%d] entries!\n", 
                                        num_subkeys+1));
                                SAFE_FREE( subkeys );
@@ -2550,9 +2549,14 @@ static void map_single_multi_sz_into_ctr(REGVAL_CTR *ctr, const char *val_name,
 
        /* a multi-sz has to have a null string terminator, i.e., the last
           string must be followed by two nulls */
-       str_size = (strlen(multi_sz) + 2) * sizeof(smb_ucs2_t);
-       conv_strs = calloc(str_size, 1);
+       str_size = strlen(multi_sz) + 2;
+       conv_strs = SMB_CALLOC_ARRAY(smb_ucs2_t, str_size);
+       if (!conv_strs) {
+               return;
+       }
 
+       /* Change to byte units. */
+       str_size *= sizeof(smb_ucs2_t);
        push_ucs2(NULL, conv_strs, multi_sz, str_size, 
                  STR_TERMINATE | STR_NOALIGN);
 
@@ -3773,7 +3777,7 @@ static uint32 update_driver_init_2(NT_PRINTER_INFO_LEVEL_2 *info)
        if (buflen < len) {
                char *tb;
 
-               tb = (char *)Realloc(buf, len);
+               tb = (char *)SMB_REALLOC(buf, len);
                if (!tb) {
                        DEBUG(0, ("update_driver_init_2: failed to enlarge buffer!\n"));
                        ret = -1;
@@ -3897,7 +3901,7 @@ static WERROR save_driver_init_2(NT_PRINTER_INFO_LEVEL *printer, uint8 *data, ui
                if ((ctx = talloc_init("save_driver_init_2")) == NULL)
                        return WERR_NOMEM;
 
-               if ((nt_devmode = (NT_DEVICEMODE*)malloc(sizeof(NT_DEVICEMODE))) == NULL) {
+               if ((nt_devmode = SMB_MALLOC_P(NT_DEVICEMODE)) == NULL) {
                        status = WERR_NOMEM;
                        goto done;
                }
@@ -4014,7 +4018,7 @@ NT_PRINTER_INFO_LEVEL_2* dup_printer_2( TALLOC_CTX *ctx, NT_PRINTER_INFO_LEVEL_2
        if ( !printer )
                return NULL;
        
-       if ( !(copy = (NT_PRINTER_INFO_LEVEL_2 *)malloc(sizeof(NT_PRINTER_INFO_LEVEL_2))) )
+       if ( !(copy = SMB_MALLOC_P(NT_PRINTER_INFO_LEVEL_2)) )
                return NULL;
                
        memcpy( copy, printer, sizeof(NT_PRINTER_INFO_LEVEL_2) );
@@ -4062,7 +4066,7 @@ WERROR get_a_printer( Printer_entry *print_hnd, NT_PRINTER_INFO_LEVEL **pp_print
 
        switch (level) {
                case 2:
-                       if ((printer = (NT_PRINTER_INFO_LEVEL *)malloc(sizeof(NT_PRINTER_INFO_LEVEL))) == NULL) {
+                       if ((printer = SMB_MALLOC_P(NT_PRINTER_INFO_LEVEL)) == NULL) {
                                DEBUG(0,("get_a_printer: malloc fail.\n"));
                                return WERR_NOMEM;
                        }
@@ -4123,7 +4127,7 @@ WERROR get_a_printer( Printer_entry *print_hnd, NT_PRINTER_INFO_LEVEL **pp_print
                                /* save a copy in cache */
                                if ( print_hnd && (print_hnd->printer_type==PRINTER_HANDLE_IS_PRINTER)) {
                                        if ( !print_hnd->printer_info )
-                                               print_hnd->printer_info = (NT_PRINTER_INFO_LEVEL *)malloc(sizeof(NT_PRINTER_INFO_LEVEL));
+                                               print_hnd->printer_info = SMB_MALLOC_P(NT_PRINTER_INFO_LEVEL);
 
                                        if ( print_hnd->printer_info ) {
                                                /* make sure to use the handle's talloc ctx here since 
index 2a59e2c5d30cb1fbc6152273604bb9d0dc0250d6..5cc36d6e170284a575efc1a2de9637dfae28edca 100644 (file)
@@ -909,7 +909,7 @@ cups_queue_get(const char *printer_name,
                {
                        qalloc += 16;
 
-                       temp = Realloc(queue, sizeof(print_queue_struct) * qalloc);
+                       temp = SMB_REALLOC_ARRAY(queue, print_queue_struct, qalloc);
 
                        if (temp == NULL)
                        {
index d6074704b3fe960f39e42e95a4d0674c30268da0..256654179e68141a37d5a3ab4e899a8058268a10 100644 (file)
@@ -194,7 +194,7 @@ static int generic_queue_get(const char *printer_name,
        qcount = 0;
        ZERO_STRUCTP(status);
        if (numlines)
-               queue = (print_queue_struct *)malloc(sizeof(print_queue_struct)*(numlines+1));
+               queue = SMB_MALLOC_ARRAY(print_queue_struct, numlines+1);
 
        if (queue) {
                memset(queue, '\0', sizeof(print_queue_struct)*(numlines+1));
index 9d9ebba9506e6534c2d323e89eb97e9ee8b5c5c2..5c8790e34b1951da4ec1ceb4aec2b698b6011d58 100644 (file)
@@ -536,7 +536,7 @@ static BOOL pjob_store(const char* sharename, uint32 jobid, struct printjob *pjo
                if (buflen != len) {
                        char *tb;
 
-                       tb = (char *)Realloc(buf, len);
+                       tb = (char *)SMB_REALLOC(buf, len);
                        if (!tb) {
                                DEBUG(0,("pjob_store: failed to enlarge buffer!\n"));
                                goto done;
@@ -934,7 +934,7 @@ static void store_queue_struct(struct tdb_print_db *pdb, struct traverse_struct
                                queue[i].fs_file);
        }
 
-       if ((data.dptr = malloc(data.dsize)) == NULL)
+       if ((data.dptr = SMB_MALLOC(data.dsize)) == NULL)
                return;
 
         len = 0;
@@ -1423,7 +1423,7 @@ BOOL print_notify_register_pid(int snum)
 
        if (i == data.dsize) {
                /* We weren't in the list. Realloc. */
-               data.dptr = Realloc(data.dptr, data.dsize + 8);
+               data.dptr = SMB_REALLOC(data.dptr, data.dsize + 8);
                if (!data.dptr) {
                        DEBUG(0,("print_notify_register_pid: Relloc fail for printer %s\n",
                                                printername));
@@ -2379,7 +2379,7 @@ static BOOL get_stored_queue_info(struct tdb_print_db *pdb, int snum, int *pcoun
        if (qcount == 0 && extra_count == 0)
                goto out;
 
-       if ((queue = (print_queue_struct *)malloc(sizeof(print_queue_struct)*(qcount + extra_count))) == NULL)
+       if ((queue = SMB_MALLOC_ARRAY(print_queue_struct, qcount + extra_count)) == NULL)
                goto out;
 
        /* Retrieve the linearised queue data. */
index d45ad1cff796c02820158945f733bd6c0f9a811c..b9b4b3c6b04ab6249f440bc235d995dd1cba1bde 100644 (file)
@@ -80,7 +80,7 @@ struct tdb_print_db *get_print_db_byname(const char *printername)
        
        if (!p) {
                /* Create one. */
-               p = (struct tdb_print_db *)malloc(sizeof(struct tdb_print_db));
+               p = SMB_MALLOC_P(struct tdb_print_db);
                if (!p) {
                        DEBUG(0,("get_print_db: malloc fail !\n"));
                        return NULL;
index 547eed392d87e138ba386cbdbb3c24e36013aea7..3b75cae1a59f791e44a0c4efd7cdbcfafbc06121 100644 (file)
@@ -78,7 +78,7 @@ REGISTRY_HOOK* reghook_cache_find( char *keyname )
        /* prepend the string with a '\' character */
        
        len = strlen( keyname );
-       if ( !(key = malloc( len + 2 )) ) {
+       if ( !(key = SMB_MALLOC( len + 2 )) ) {
                DEBUG(0,("reghook_cache_find: malloc failed for string [%s] !?!?!\n",
                        keyname));
                return NULL;
index cd5ec18f0210b096e0bd15a761e5a22f1ae87b4f..5ac8329309046cdb27f4ebf3a2afbecaa7d46901 100644 (file)
@@ -183,7 +183,7 @@ BOOL regdb_store_reg_keys( char *keyname, REGSUBKEY_CTR *ctr )
        
        /* allocate some initial memory */
                
-       buffer = malloc(sizeof(pstring));
+       buffer = SMB_MALLOC(sizeof(pstring));
        buflen = sizeof(pstring);
        len = 0;
        
@@ -197,7 +197,7 @@ BOOL regdb_store_reg_keys( char *keyname, REGSUBKEY_CTR *ctr )
                len += tdb_pack( buffer+len, buflen-len, "f", regsubkey_ctr_specific_key(ctr, i) );
                if ( len > buflen ) {
                        /* allocate some extra space */
-                       if ((tmpbuf = Realloc( buffer, len*2 )) == NULL) {
+                       if ((tmpbuf = SMB_REALLOC( buffer, len*2 )) == NULL) {
                                DEBUG(0,("regdb_store_reg_keys: Failed to realloc memory of size [%d]\n", len*2));
                                ret = False;
                                goto done;
index a9dfb52f011b36250f129b075ed0871632df6b3c..1f8c936290135f473b988c1db5ffbb15f8d338f1 100644 (file)
@@ -154,7 +154,7 @@ BOOL fetch_reg_keys_specific( REGISTRY_KEY *key, char** subkey, uint32 key_index
        if ( !(s = regsubkey_ctr_specific_key( &ctr, key_index )) )
                return False;
 
-       *subkey = strdup( s );
+       *subkey = SMB_STRDUP( s );
 
        return True;
 }
index 9cfeb7faa97baf29b61c973a2af613295262e246..16fb7dd18d7bf7eedbfeda93ad0b3133d153de16 100644 (file)
@@ -52,16 +52,16 @@ int regsubkey_ctr_addkey( REGSUBKEY_CTR *ctr, const char *keyname )
                /* allocate a space for the char* in the array */
                
                if (  ctr->subkeys == 0 )
-                       ctr->subkeys = talloc( ctr->ctx, sizeof(char*) );
+                       ctr->subkeys = TALLOC_P( ctr->ctx, char *);
                else {
-                       pp = talloc_realloc( ctr->ctx, ctr->subkeys, sizeof(char*)*(ctr->num_subkeys+1) );
+                       pp = TALLOC_REALLOC_ARRAY( ctr->ctx, ctr->subkeys, char *, ctr->num_subkeys+1);
                        if ( pp )
                                ctr->subkeys = pp;
                }
 
                /* allocate the string and save it in the array */
                
-               ctr->subkeys[ctr->num_subkeys] = talloc( ctr->ctx, len+1 );
+               ctr->subkeys[ctr->num_subkeys] = TALLOC( ctr->ctx, len+1 );
                strncpy( ctr->subkeys[ctr->num_subkeys], keyname, len+1 );
                ctr->num_subkeys++;
        }
@@ -138,7 +138,7 @@ REGISTRY_VALUE* dup_registry_value( REGISTRY_VALUE *val )
        if ( !val )
                return NULL;
        
-       if ( !(copy = malloc( sizeof(REGISTRY_VALUE) )) ) {
+       if ( !(copy = SMB_MALLOC_P( REGISTRY_VALUE)) ) {
                DEBUG(0,("dup_registry_value: malloc() failed!\n"));
                return NULL;
        }
@@ -244,22 +244,22 @@ int regval_ctr_addvalue( REGVAL_CTR *ctr, const char *name, uint16 type,
                /* allocate a slot in the array of pointers */
                
                if (  ctr->num_values == 0 )
-                       ctr->values = talloc( ctr->ctx, sizeof(REGISTRY_VALUE*) );
+                       ctr->values = TALLOC_P( ctr->ctx, REGISTRY_VALUE *);
                else {
-                       ppreg = talloc_realloc( ctr->ctx, ctr->values, sizeof(REGISTRY_VALUE*)*(ctr->num_values+1) );
+                       ppreg = TALLOC_REALLOC_ARRAY( ctr->ctx, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 );
                        if ( ppreg )
                                ctr->values = ppreg;
                }
 
                /* allocate a new value and store the pointer in the arrya */
                
-               ctr->values[ctr->num_values] = talloc( ctr->ctx, sizeof(REGISTRY_VALUE) );
+               ctr->values[ctr->num_values] = TALLOC_P( ctr->ctx, REGISTRY_VALUE);
 
                /* init the value */
        
                fstrcpy( ctr->values[ctr->num_values]->valuename, name );
                ctr->values[ctr->num_values]->type = type;
-               ctr->values[ctr->num_values]->data_p = talloc_memdup( ctr->ctx, data_p, size );
+               ctr->values[ctr->num_values]->data_p = TALLOC_MEMDUP( ctr->ctx, data_p, size );
                ctr->values[ctr->num_values]->size = size;
                ctr->num_values++;
        }
@@ -280,22 +280,22 @@ int regval_ctr_copyvalue( REGVAL_CTR *ctr, REGISTRY_VALUE *val )
                /* allocate a slot in the array of pointers */
                
                if (  ctr->num_values == 0 )
-                       ctr->values = talloc( ctr->ctx, sizeof(REGISTRY_VALUE*) );
+                       ctr->values = TALLOC_P( ctr->ctx, REGISTRY_VALUE *);
                else {
-                       ppreg = talloc_realloc( ctr->ctx, ctr->values, sizeof(REGISTRY_VALUE*)*(ctr->num_values+1) );
+                       ppreg = TALLOC_REALLOC_ARRAY( ctr->ctx, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 );
                        if ( ppreg )
                                ctr->values = ppreg;
                }
 
                /* allocate a new value and store the pointer in the arrya */
                
-               ctr->values[ctr->num_values] = talloc( ctr->ctx, sizeof(REGISTRY_VALUE) );
+               ctr->values[ctr->num_values] = TALLOC_P( ctr->ctx, REGISTRY_VALUE);
 
                /* init the value */
        
                fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename );
                ctr->values[ctr->num_values]->type = val->type;
-               ctr->values[ctr->num_values]->data_p = talloc_memdup( ctr->ctx, val->data_p, val->size );
+               ctr->values[ctr->num_values]->data_p = TALLOC_MEMDUP( ctr->ctx, val->data_p, val->size );
                ctr->values[ctr->num_values]->size = val->size;
                ctr->num_values++;
        }
index 14eb57c6f2a310375d0479a88213682b4c0aad9e..ee4d1dcb642dc18ff4ce591c2b079d217eed9e7e 100644 (file)
@@ -73,7 +73,7 @@ static char* trim_reg_path( char *path )
                p++;
        
        if ( *p )
-               return strdup(p);
+               return SMB_STRDUP(p);
        else
                return NULL;
 }
@@ -136,7 +136,7 @@ static int print_subpath_environments( char *key, REGSUBKEY_CTR *subkeys )
        
        /* we are dealing with a subkey of "Environments */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        
@@ -257,7 +257,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
        
        /* env */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        if ( !base || !new_path )
@@ -322,7 +322,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
                        
                        length = strlen(filename);
                
-                       buffer2 = Realloc( buffer, buffer_size + (length + 1)*sizeof(uint16) );
+                       buffer2 = SMB_REALLOC( buffer, buffer_size + (length + 1)*sizeof(uint16) );
                        if ( !buffer2 )
                                break;
                        buffer = buffer2;
@@ -335,7 +335,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
                
                /* terminated by double NULL.  Add the final one here */
                
-               buffer2 = Realloc( buffer, buffer_size + 2 );
+               buffer2 = SMB_REALLOC( buffer, buffer_size + 2 );
                if ( !buffer2 ) {
                        SAFE_FREE( buffer );
                        buffer_size = 0;
@@ -492,7 +492,7 @@ static int print_subpath_printers( char *key, REGSUBKEY_CTR *subkeys )
 
        /* get information for a specific printer */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
 
@@ -546,7 +546,7 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
                goto done;
        }
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        
index 09e63a471474588880828b873a1e5bd1c718e7b4..1a2174d58c68a6414211bbb539de2be59839dbcd 100644 (file)
@@ -39,8 +39,13 @@ NTSTATUS cli_ds_getprimarydominfo(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
        
        q.level = level;
        
@@ -63,7 +68,7 @@ NTSTATUS cli_ds_getprimarydominfo(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        result = r.status;
 
        if ( r.ptr && ctr ) {
-               ctr->basic = talloc(mem_ctx, sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC));
+               ctr->basic = TALLOC_P(mem_ctx, DSROLE_PRIMARY_DOMAIN_INFO_BASIC);
                if (!ctr->basic)
                        goto done;
                memcpy(ctr->basic, r.info.basic, sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC));
@@ -94,8 +99,13 @@ NTSTATUS cli_ds_enum_domain_trusts(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        init_q_ds_enum_domain_trusts( &q, server, flags );
                
@@ -118,7 +128,7 @@ NTSTATUS cli_ds_enum_domain_trusts(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                int i;
        
                *num_domains = r.num_domains;
-               *trusts = (struct ds_domain_trust*)talloc(mem_ctx, r.num_domains*sizeof(**trusts));
+               *trusts = TALLOC_ARRAY(mem_ctx, struct ds_domain_trust, r.num_domains);
 
                for ( i=0; i< *num_domains; i++ ) {
                        (*trusts)[i].flags = r.domains.trusts[i].flags;
@@ -153,5 +163,3 @@ done:
 
        return result;
 }
-
-
index 03a4ab36ee0d163d219aced9ce926eabccb578da..1ae7aaa8e7070fb3c6cb9f35abb047fa5775b8d8 100644 (file)
@@ -35,8 +35,13 @@ NTSTATUS cli_echo_add_one(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        /* Marshall data and send request */
 
@@ -76,8 +81,13 @@ NTSTATUS cli_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        /* Marshall data and send request */
 
@@ -95,7 +105,7 @@ NTSTATUS cli_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        result = True;
 
        if (out_data) {
-               *out_data = talloc(mem_ctx, size);
+               *out_data = TALLOC(mem_ctx, size);
                memcpy(*out_data, r.data, size);
        }
 
@@ -119,8 +129,13 @@ NTSTATUS cli_echo_sink_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        /* Marshall data and send request */
 
@@ -159,8 +174,13 @@ NTSTATUS cli_echo_source_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise parse structures */
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       if (!prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       if (!prs_init(&rbuf, 0, mem_ctx, UNMARSHALL)) {
+               prs_mem_free(&qbuf);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        /* Marshall data and send request */
 
index 40b83c5c0c7e7818ad79b953a2a0bf735e79785b..a8dfa93bd88640d05300e66acd25cbc25759592d 100644 (file)
@@ -88,7 +88,7 @@ NTSTATUS cli_lsa_open_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (NT_STATUS_IS_OK(result = r.status)) {
                *pol = r.pol;
 #ifdef __INSURE__
-               pol->marker = malloc(1);
+               pol->marker = MALLOC(1);
 #endif
        }
 
@@ -276,22 +276,19 @@ NTSTATUS cli_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       if (!((*domains) = (char **)talloc(mem_ctx, sizeof(char *) *
-                                          num_sids))) {
+       if (!((*domains) = TALLOC_ARRAY(mem_ctx, char *, num_sids))) {
                DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
-       if (!((*names) = (char **)talloc(mem_ctx, sizeof(char *) *
-                                        num_sids))) {
+       if (!((*names) = TALLOC_ARRAY(mem_ctx, char *, num_sids))) {
                DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
-       if (!((*types) = (uint32 *)talloc(mem_ctx, sizeof(uint32) *
-                                         num_sids))) {
+       if (!((*types) = TALLOC_ARRAY(mem_ctx, uint32, num_sids))) {
                DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -393,15 +390,13 @@ NTSTATUS cli_lsa_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       if (!((*sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) *
-                                        num_names)))) {
+       if (!((*sids = TALLOC_ARRAY(mem_ctx, DOM_SID, num_names)))) {
                DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
-       if (!((*types = (uint32 *)talloc(mem_ctx, sizeof(uint32) *
-                                        num_names)))) {
+       if (!((*types = TALLOC_ARRAY(mem_ctx, uint32, num_names)))) {
                DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -491,7 +486,7 @@ NTSTATUS cli_lsa_query_info_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                }
 
                if (domain_sid && (r.dom.id3.buffer_dom_sid != 0)) {
-                       *domain_sid = talloc(mem_ctx, sizeof(**domain_sid));
+                       *domain_sid = TALLOC_P(mem_ctx, DOM_SID);
                        if (*domain_sid) {
                                sid_copy(*domain_sid, &r.dom.id3.dom_sid.sid);
                        }
@@ -508,7 +503,7 @@ NTSTATUS cli_lsa_query_info_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                }
                        
                if (domain_sid && (r.dom.id5.buffer_dom_sid != 0)) {
-                       *domain_sid = talloc(mem_ctx, sizeof(**domain_sid));
+                       *domain_sid = TALLOC_P(mem_ctx, DOM_SID);
                        if (*domain_sid) {
                                sid_copy(*domain_sid, &r.dom.id5.dom_sid.sid);
                        }
@@ -599,14 +594,14 @@ NTSTATUS cli_lsa_query_info_policy2(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
        
        if (domain_guid) {
-               *domain_guid = talloc(mem_ctx, sizeof(**domain_guid));
+               *domain_guid = TALLOC_P(mem_ctx, struct uuid);
                memcpy(*domain_guid, 
                       &r.info.dns_dom_info.dom_guid, 
                       sizeof(struct uuid));
        }
 
        if (domain_sid && r.info.dns_dom_info.ptr_dom_sid != 0) {
-               *domain_sid = talloc(mem_ctx, sizeof(**domain_sid));
+               *domain_sid = TALLOC_P(mem_ctx, DOM_SID);
                if (*domain_sid) {
                        sid_copy(*domain_sid, 
                                 &r.info.dns_dom_info.dom_sid.sid);
@@ -689,8 +684,7 @@ NTSTATUS cli_lsa_enum_trust_dom(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
                /* Allocate memory for trusted domain names and sids */
 
-               *domain_names = (char **)talloc(mem_ctx, sizeof(char *) *
-                                               r.num_domains);
+               *domain_names = TALLOC_ARRAY(mem_ctx, char *, r.num_domains);
 
                if (!*domain_names) {
                        DEBUG(0, ("cli_lsa_enum_trust_dom(): out of memory\n"));
@@ -698,8 +692,7 @@ NTSTATUS cli_lsa_enum_trust_dom(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                        goto done;
                }
 
-               *domain_sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) *
-                                                r.num_domains);
+               *domain_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, r.num_domains);
                if (!domain_sids) {
                        DEBUG(0, ("cli_lsa_enum_trust_dom(): out of memory\n"));
                        result = NT_STATUS_NO_MEMORY;
@@ -775,19 +768,19 @@ NTSTATUS cli_lsa_enum_privilege(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        *enum_context = r.enum_context;
        *count = r.count;
 
-       if (!((*privs_name = (char **)talloc(mem_ctx, sizeof(char *) * r.count)))) {
+       if (!((*privs_name = TALLOC_ARRAY(mem_ctx, char *, r.count)))) {
                DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
-       if (!((*privs_high = (uint32 *)talloc(mem_ctx, sizeof(uint32) * r.count)))) {
+       if (!((*privs_high = TALLOC_ARRAY(mem_ctx, uint32, r.count)))) {
                DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
-       if (!((*privs_low = (uint32 *)talloc(mem_ctx, sizeof(uint32) * r.count)))) {
+       if (!((*privs_low = TALLOC_ARRAY(mem_ctx, uint32, r.count)))) {
                DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -912,7 +905,7 @@ NTSTATUS cli_lsa_enum_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Return output parameters */
 
-       *sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) * r.sids.num_entries);
+       *sids = TALLOC_ARRAY(mem_ctx, DOM_SID, r.sids.num_entries);
        if (!*sids) {
                DEBUG(0, ("(cli_lsa_enum_sids): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
@@ -1037,7 +1030,7 @@ NTSTATUS cli_lsa_enum_privsaccount(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (r.count == 0)
                goto done;
 
-       if (!((*set = (LUID_ATTR *)talloc(mem_ctx, sizeof(LUID_ATTR) * r.count)))) {
+       if (!((*set = TALLOC_ARRAY(mem_ctx, LUID_ATTR, r.count)))) {
                DEBUG(0, ("(cli_lsa_enum_privsaccount): out of memory\n"));
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -1206,7 +1199,7 @@ NTSTATUS cli_lsa_enum_account_rights(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       *privs_name = (char **)talloc(mem_ctx, (*count) * sizeof(char **));
+       *privs_name = TALLOC_ARRAY(mem_ctx, char *, *count);
        for (i=0;i<*count;i++) {
                pull_ucs2_talloc(mem_ctx, &(*privs_name)[i], r.rights.strings[i].string.buffer);
        }
index 86f65056897eccbf3c136e7e789741e7345b1450..26c29474ead88875c5f358f33bf2d95eeb32a5b8 100644 (file)
@@ -853,13 +853,13 @@ NTSTATUS cli_samr_enum_dom_users(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        if (r.num_entries2) {
                /* allocate memory needed to return received data */    
-               *rids = (uint32*)talloc(mem_ctx, sizeof(uint32) * r.num_entries2);
+               *rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_entries2);
                if (!*rids) {
                        DEBUG(0, ("Error in cli_samr_enum_dom_users(): out of memory\n"));
                        return NT_STATUS_NO_MEMORY;
                }
                
-               *dom_users = (char**)talloc(mem_ctx, sizeof(char*) * r.num_entries2);
+               *dom_users = TALLOC_ARRAY(mem_ctx, char*, r.num_entries2);
                if (!*dom_users) {
                        DEBUG(0, ("Error in cli_samr_enum_dom_users(): out of memory\n"));
                        return NT_STATUS_NO_MEMORY;
@@ -931,8 +931,7 @@ NTSTATUS cli_samr_enum_dom_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (*num_dom_groups == 0)
                goto done;
 
-       if (!((*dom_groups) = (struct acct_info *)
-             talloc(mem_ctx, sizeof(struct acct_info) * *num_dom_groups))) {
+       if (!((*dom_groups) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_dom_groups))) {
                result = NT_STATUS_NO_MEMORY;
                goto done;
        }
@@ -1014,8 +1013,7 @@ NTSTATUS cli_samr_enum_als_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (*num_dom_aliases == 0)
                goto done;
 
-       if (!((*dom_aliases) = (struct acct_info *)
-             talloc(mem_ctx, sizeof(struct acct_info) * *num_dom_aliases))) {
+       if (!((*dom_aliases) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_dom_aliases))) {
                result = NT_STATUS_NO_MEMORY;
                goto done;
        }
@@ -1096,7 +1094,7 @@ NTSTATUS cli_samr_query_aliasmem(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       if (!(*sids = talloc(mem_ctx, sizeof(DOM_SID) * *num_mem))) {
+       if (!(*sids = TALLOC_ARRAY(mem_ctx, DOM_SID, *num_mem))) {
                result = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
@@ -1654,8 +1652,8 @@ NTSTATUS cli_samr_lookup_rids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        *num_names = r.num_names1;
-       *names = talloc(mem_ctx, sizeof(char *) * r.num_names1);
-       *name_types = talloc(mem_ctx, sizeof(uint32) * r.num_names1);
+       *names = TALLOC_ARRAY(mem_ctx, char *, r.num_names1);
+       *name_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_names1);
 
        for (i = 0; i < r.num_names1; i++) {
                fstring tmp;
@@ -1724,8 +1722,8 @@ NTSTATUS cli_samr_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        *num_rids = r.num_rids1;
-       *rids = talloc(mem_ctx, sizeof(uint32) * r.num_rids1);
-       *rid_types = talloc(mem_ctx, sizeof(uint32) * r.num_rids1);
+       *rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
+       *rid_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
 
        for (i = 0; i < r.num_rids1; i++) {
                (*rids)[i] = r.rids[i];
index dc693eb02cfeaa48eba2f96de8667efd07ee5675..5030a97c00610d34a111d9c49f7700505c790ca2 100644 (file)
@@ -55,7 +55,7 @@ static void decode_printer_info_0(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PRINTER_INFO_0  *inf;
 
-        inf=(PRINTER_INFO_0 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_0));
+        inf=TALLOC_ARRAY(mem_ctx, PRINTER_INFO_0, returned);
        memset(inf, 0, returned*sizeof(PRINTER_INFO_0));
 
        prs_set_offset(&buffer->prs,0);
@@ -75,7 +75,7 @@ static void decode_printer_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PRINTER_INFO_1  *inf;
 
-        inf=(PRINTER_INFO_1 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_1));
+        inf=TALLOC_ARRAY(mem_ctx, PRINTER_INFO_1, returned);
        memset(inf, 0, returned*sizeof(PRINTER_INFO_1));
 
        prs_set_offset(&buffer->prs,0);
@@ -95,7 +95,7 @@ static void decode_printer_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PRINTER_INFO_2  *inf;
 
-        inf=(PRINTER_INFO_2 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_2));
+        inf=TALLOC_ARRAY(mem_ctx, PRINTER_INFO_2, returned);
        memset(inf, 0, returned*sizeof(PRINTER_INFO_2));
 
        prs_set_offset(&buffer->prs,0);
@@ -117,7 +117,7 @@ static void decode_printer_info_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PRINTER_INFO_3  *inf;
 
-        inf=(PRINTER_INFO_3 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_3));
+        inf=TALLOC_ARRAY(mem_ctx, PRINTER_INFO_3, returned);
        memset(inf, 0, returned*sizeof(PRINTER_INFO_3));
 
        prs_set_offset(&buffer->prs,0);
@@ -138,7 +138,7 @@ static void decode_printer_info_7(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
        uint32 i;
        PRINTER_INFO_7  *inf;
 
-       inf=(PRINTER_INFO_7 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_7));
+       inf=TALLOC_ARRAY(mem_ctx, PRINTER_INFO_7, returned);
        memset(inf, 0, returned*sizeof(PRINTER_INFO_7));
 
        prs_set_offset(&buffer->prs,0);
@@ -159,7 +159,7 @@ static void decode_port_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PORT_INFO_1 *inf;
 
-        inf=(PORT_INFO_1*)talloc(mem_ctx, returned*sizeof(PORT_INFO_1));
+        inf=TALLOC_ARRAY(mem_ctx, PORT_INFO_1, returned);
        memset(inf, 0, returned*sizeof(PORT_INFO_1));
 
         prs_set_offset(&buffer->prs, 0);
@@ -179,7 +179,7 @@ static void decode_port_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         PORT_INFO_2 *inf;
 
-        inf=(PORT_INFO_2*)talloc(mem_ctx, returned*sizeof(PORT_INFO_2));
+        inf=TALLOC_ARRAY(mem_ctx, PORT_INFO_2, returned);
        memset(inf, 0, returned*sizeof(PORT_INFO_2));
 
         prs_set_offset(&buffer->prs, 0);
@@ -199,7 +199,7 @@ static void decode_printer_driver_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         DRIVER_INFO_1 *inf;
 
-        inf=(DRIVER_INFO_1 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_1));
+        inf=TALLOC_ARRAY(mem_ctx, DRIVER_INFO_1, returned);
        memset(inf, 0, returned*sizeof(DRIVER_INFO_1));
 
        prs_set_offset(&buffer->prs,0);
@@ -219,7 +219,7 @@ static void decode_printer_driver_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         DRIVER_INFO_2 *inf;
 
-        inf=(DRIVER_INFO_2 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_2));
+        inf=TALLOC_ARRAY(mem_ctx, DRIVER_INFO_2, returned);
        memset(inf, 0, returned*sizeof(DRIVER_INFO_2));
 
        prs_set_offset(&buffer->prs,0);
@@ -239,7 +239,7 @@ static void decode_printer_driver_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
         uint32 i;
         DRIVER_INFO_3 *inf;
 
-        inf=(DRIVER_INFO_3 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_3));
+        inf=TALLOC_ARRAY(mem_ctx, DRIVER_INFO_3, returned);
        memset(inf, 0, returned*sizeof(DRIVER_INFO_3));
 
        prs_set_offset(&buffer->prs,0);
@@ -259,7 +259,7 @@ static void decode_printerdriverdir_1 (TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
 {
        DRIVER_DIRECTORY_1 *inf;
  
-        inf=(DRIVER_DIRECTORY_1 *)talloc(mem_ctx, sizeof(DRIVER_DIRECTORY_1));
+        inf=TALLOC_P(mem_ctx, DRIVER_DIRECTORY_1);
        memset(inf, 0, sizeof(DRIVER_DIRECTORY_1));
 
         prs_set_offset(&buffer->prs, 0);
@@ -1499,7 +1499,7 @@ static void decode_forms_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
 {
        int i;
 
-       *forms = (FORM_1 *)talloc(mem_ctx, num_forms * sizeof(FORM_1));
+       *forms = TALLOC_ARRAY(mem_ctx, FORM_1, num_forms);
        prs_set_offset(&buffer->prs,0);
 
        for (i = 0; i < num_forms; i++)
@@ -1581,7 +1581,7 @@ static void decode_jobs_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
 {
        uint32 i;
 
-       *jobs = (JOB_INFO_1 *)talloc(mem_ctx, num_jobs * sizeof(JOB_INFO_1));
+       *jobs = TALLOC_ARRAY(mem_ctx, JOB_INFO_1, num_jobs);
        prs_set_offset(&buffer->prs,0);
 
        for (i = 0; i < num_jobs; i++) 
@@ -1593,7 +1593,7 @@ static void decode_jobs_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
 {
        uint32 i;
 
-       *jobs = (JOB_INFO_2 *)talloc(mem_ctx, num_jobs * sizeof(JOB_INFO_2));
+       *jobs = TALLOC_ARRAY(mem_ctx, JOB_INFO_2, num_jobs);
        prs_set_offset(&buffer->prs,0);
 
        for (i = 0; i < num_jobs; i++) 
@@ -2016,7 +2016,7 @@ WERROR cli_spoolss_getprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Return output parameters */
 
-       value->data_p = talloc_memdup(mem_ctx, r.data, r.needed);
+       value->data_p = TALLOC_MEMDUP(mem_ctx, r.data, r.needed);
        value->type = r.type;
        value->size = r.size;
 
@@ -2071,7 +2071,7 @@ WERROR cli_spoolss_getprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Return output parameters */
 
-       value->data_p = talloc_memdup(mem_ctx, r.data, r.needed);
+       value->data_p = TALLOC_MEMDUP(mem_ctx, r.data, r.needed);
        value->type = r.type;
        value->size = r.needed;
 
@@ -2226,7 +2226,7 @@ WERROR cli_spoolss_enumprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (value) {
                rpcstr_pull(value->valuename, r.value, sizeof(value->valuename), -1,
                            STR_TERMINATE);
-               value->data_p = talloc_memdup(mem_ctx, r.data, r.realdatasize);
+               value->data_p = TALLOC_MEMDUP(mem_ctx, r.data, r.realdatasize);
                value->type = r.type;
                value->size = r.realdatasize;
        }
@@ -2483,7 +2483,7 @@ WERROR cli_spoolss_enumprinterkey(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        /* Copy results */
        
        if (keylist) {
-               *keylist = (uint16 *)malloc(r.keys.buf_len * 2);
+               *keylist = SMB_MALLOC_ARRAY(uint16, r.keys.buf_len);
                memcpy(*keylist, r.keys.buffer, r.keys.buf_len * 2);
                if (len)
                        *len = r.keys.buf_len * 2;
index da4721c2c7d1dead8244911bee875738bf5b58fb..3385fbe463e810a3f59a66d32fff813040c36fdd 100644 (file)
@@ -120,8 +120,7 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        switch(info_level) {
        case 1:
-               ctr->share.info1 = (SRV_SHARE_INFO_1 *)talloc(
-                       mem_ctx, sizeof(SRV_SHARE_INFO_1) * ctr->num_entries);
+               ctr->share.info1 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_1, ctr->num_entries);
                
                memset(ctr->share.info1, 0, sizeof(SRV_SHARE_INFO_1));
 
@@ -148,8 +147,7 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
                break;
        case 2:
-               ctr->share.info2 = (SRV_SHARE_INFO_2 *)talloc(
-                       mem_ctx, sizeof(SRV_SHARE_INFO_2) * ctr->num_entries);
+               ctr->share.info2 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_2, ctr->num_entries);
                
                memset(ctr->share.info2, 0, sizeof(SRV_SHARE_INFO_2));
 
@@ -183,8 +181,7 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                break;
        /* adding info-level 502 here */
        case 502:
-               ctr->share.info502 = (SRV_SHARE_INFO_502 *)talloc(
-                       mem_ctx, sizeof(SRV_SHARE_INFO_502) * ctr->num_entries);
+               ctr->share.info502 = TALLOC_ARRAY(mem_ctx, SRV_SHARE_INFO_502, ctr->num_entries);
                
                memset(ctr->share.info502, 0, sizeof(SRV_SHARE_INFO_502));
 
@@ -492,8 +489,7 @@ WERROR cli_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        
        switch(file_level) {
        case 3:
-               ctr->file.info3 = (SRV_FILE_INFO_3 *)talloc(
-                       mem_ctx, sizeof(SRV_FILE_INFO_3) * ctr->num_entries);
+               ctr->file.info3 = TALLOC_ARRAY(mem_ctx, SRV_FILE_INFO_3, ctr->num_entries);
 
                memset(ctr->file.info3, 0, 
                       sizeof(SRV_FILE_INFO_3) * ctr->num_entries);
index 0d0ce557b2283f761d9cedf3163fd206af163d35..3f7b2a4cd59f279f0d976addfa369f500a4d6659 100644 (file)
@@ -374,7 +374,7 @@ BOOL dfs_io_dfs_info_ctr(const char *desc, DFS_INFO_CTR* ctr, uint32 num_entries
                depth++;
                /* should depend on whether marshalling or unmarshalling! */
                if(UNMARSHALLING(ps)) {
-                       ctr->dfs.info1 = (DFS_INFO_1 *)prs_alloc_mem(ps, sizeof(DFS_INFO_1)*num_entries);
+                       ctr->dfs.info1 = PRS_ALLOC_MEM(ps, DFS_INFO_1, num_entries);
                        if (!ctr->dfs.info1)
                                return False;
                }
@@ -394,7 +394,7 @@ BOOL dfs_io_dfs_info_ctr(const char *desc, DFS_INFO_CTR* ctr, uint32 num_entries
        case 2:
                depth++;
                if(UNMARSHALLING(ps)) {
-                       ctr->dfs.info2 = (DFS_INFO_2 *)prs_alloc_mem(ps, num_entries*sizeof(DFS_INFO_2));
+                       ctr->dfs.info2 = PRS_ALLOC_MEM(ps, DFS_INFO_2, num_entries);
                        if (!ctr->dfs.info2)
                                return False;
                }
@@ -424,7 +424,7 @@ BOOL dfs_io_dfs_info_ctr(const char *desc, DFS_INFO_CTR* ctr, uint32 num_entries
        case 3:
                depth++;
                if(UNMARSHALLING(ps)) {
-                       ctr->dfs.info3 = (DFS_INFO_3 *)prs_alloc_mem(ps, num_entries*sizeof(DFS_INFO_3));
+                       ctr->dfs.info3 = PRS_ALLOC_MEM(ps, DFS_INFO_3, num_entries);
                        if (!ctr->dfs.info3)
                                return False;
                }
@@ -517,7 +517,7 @@ BOOL dfs_io_dfs_storage_info(const char *desc, DFS_INFO_3* info3, prs_struct *ps
        depth++;
 
        if(UNMARSHALLING(ps)) {
-               info3->storages = (DFS_STORAGE_INFO *)prs_alloc_mem(ps, info3->num_storage_infos*sizeof(DFS_STORAGE_INFO));
+               info3->storages = PRS_ALLOC_MEM(ps, DFS_STORAGE_INFO, info3->num_storage_infos);
                if (!info3->storages)
                        return False;
        }
index 070f6be43a76780569199e266496daba6b804a8e..9155419ae438848b59ab9fb0e9ef844719f2a3fe 100644 (file)
@@ -29,7 +29,7 @@ static BOOL ds_io_dominfobasic( const char *desc, prs_struct *ps, int depth, DSR
        DSROLE_PRIMARY_DOMAIN_INFO_BASIC *p = *basic;
        
        if ( UNMARSHALLING(ps) )
-               p = *basic = (DSROLE_PRIMARY_DOMAIN_INFO_BASIC *)prs_alloc_mem(ps, sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC));
+               p = *basic = PRS_ALLOC_MEM(ps, DSROLE_PRIMARY_DOMAIN_INFO_BASIC, 1);
                
        if ( !p )
                return False;
@@ -208,7 +208,7 @@ static BOOL ds_io_dom_trusts_ctr( const char *desc, prs_struct *ps, int depth, D
        
        /* allocate the domain trusts array are parse it */
        
-       ctr->trusts = (DS_DOMAIN_TRUSTS*)talloc(ps->mem_ctx, sizeof(DS_DOMAIN_TRUSTS)*ctr->max_count);
+       ctr->trusts = TALLOC_ARRAY(ps->mem_ctx, DS_DOMAIN_TRUSTS, ctr->max_count);
        
        if ( !ctr->trusts )
                return False;
index 4b1ff1f4d545d35811dca7645fdebc02c95a0160..b4aa8de24ab9a78c2168e1473efb179f57bf23e9 100644 (file)
@@ -67,7 +67,7 @@ BOOL echo_io_q_echo_data(const char *desc, ECHO_Q_ECHO_DATA *q_d,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               q_d->data = prs_alloc_mem(ps, q_d->size);
+               q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
 
                if (!q_d->data)
                        return False;
@@ -86,7 +86,7 @@ BOOL echo_io_r_echo_data(const char *desc, ECHO_R_ECHO_DATA *q_d,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               q_d->data = prs_alloc_mem(ps, q_d->size);
+               q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
 
                if (!q_d->data)
                        return False;
@@ -114,7 +114,7 @@ BOOL echo_io_q_sink_data(const char *desc, ECHO_Q_SINK_DATA *q_d,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               q_d->data = prs_alloc_mem(ps, q_d->size);
+               q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
 
                if (!q_d->data)
                        return False;
@@ -153,7 +153,7 @@ BOOL echo_io_r_source_data(const char *desc, ECHO_R_SOURCE_DATA *q_d,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               q_d->data = prs_alloc_mem(ps, q_d->size);
+               q_d->data = PRS_ALLOC_MEM(ps, char, q_d->size);
 
                if (!q_d->data)
                        return False;
index 5fff1fea37f08bcc85be7029b93f691f2cf79358..e2cb94c8fe95d200a4c0fd6d03769df0a0b26026 100644 (file)
@@ -251,7 +251,7 @@ static BOOL lsa_io_obj_attr(const char *desc, LSA_OBJ_ATTR *attr, prs_struct *ps
 
        if (attr->ptr_sec_qos != 0) {
                if (UNMARSHALLING(ps))
-                       if (!(attr->sec_qos = (LSA_SEC_QOS *)prs_alloc_mem(ps,sizeof(LSA_SEC_QOS))))
+                       if (!(attr->sec_qos = PRS_ALLOC_MEM(ps,LSA_SEC_QOS,1)))
                                return False;
 
                if(!lsa_io_sec_qos("sec_qos", attr->sec_qos, ps, depth))
@@ -540,17 +540,17 @@ void init_r_enum_trust_dom(TALLOC_CTX *ctx, LSA_R_ENUM_TRUST_DOM *r_e, uint32 en
                 * allocating empty arrays of unicode headers, strings
                 * and sids of enumerated trusted domains
                 */
-               if (!(r_e->hdr_domain_name = (UNIHDR2 *)talloc(ctx,sizeof(UNIHDR2) * num_domains))) {
+               if (!(r_e->hdr_domain_name = TALLOC_ARRAY(ctx,UNIHDR2,num_domains))) {
                        r_e->status = NT_STATUS_NO_MEMORY;
                        return;
                }
                
-               if (!(r_e->uni_domain_name = (UNISTR2 *)talloc(ctx,sizeof(UNISTR2) * num_domains))) {
+               if (!(r_e->uni_domain_name = TALLOC_ARRAY(ctx,UNISTR2,num_domains))) {
                        r_e->status = NT_STATUS_NO_MEMORY;
                        return;
                }
 
-               if (!(r_e->domain_sid = (DOM_SID2 *)talloc(ctx,sizeof(DOM_SID2) * num_domains))) {
+               if (!(r_e->domain_sid = TALLOC_ARRAY(ctx,DOM_SID2,num_domains))) {
                        r_e->status = NT_STATUS_NO_MEMORY;
                        return;
                }
@@ -596,13 +596,13 @@ BOOL lsa_io_r_enum_trust_dom(const char *desc, LSA_R_ENUM_TRUST_DOM *r_e,
                num_domains = r_e->num_domains2;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(r_e->hdr_domain_name = (UNIHDR2 *)prs_alloc_mem(ps,sizeof(UNIHDR2) * num_domains)))
+                       if (!(r_e->hdr_domain_name = PRS_ALLOC_MEM(ps,UNIHDR2,num_domains)))
                                return False;
 
-                       if (!(r_e->uni_domain_name = (UNISTR2 *)prs_alloc_mem(ps,sizeof(UNISTR2) * num_domains)))
+                       if (!(r_e->uni_domain_name = PRS_ALLOC_MEM(ps,UNISTR2,num_domains)))
                                return False;
 
-                       if (!(r_e->domain_sid = (DOM_SID2 *)prs_alloc_mem(ps,sizeof(DOM_SID2) * num_domains)))
+                       if (!(r_e->domain_sid = PRS_ALLOC_MEM(ps,DOM_SID2,num_domains)))
                                return False;
                }
 
@@ -697,7 +697,7 @@ static BOOL lsa_io_dom_query_2(const char *desc, DOM_QUERY_2 *d_q, prs_struct *p
                return False;
 
        if (UNMARSHALLING(ps)) {
-               d_q->auditsettings = (uint32 *)talloc_zero(ps->mem_ctx, d_q->count2 * sizeof(uint32));
+               d_q->auditsettings = TALLOC_ZERO_ARRAY(ps->mem_ctx, uint32, d_q->count2);
        }
 
        if (d_q->auditsettings == NULL) {
@@ -818,14 +818,12 @@ static void init_lsa_sid_enum(TALLOC_CTX *mem_ctx, LSA_SID_ENUM *sen,
 
        if (num_entries == 0) return;
 
-       if ((sen->ptr_sid = (uint32 *)talloc_zero(mem_ctx, num_entries * 
-                                            sizeof(uint32))) == NULL) {
+       if ((sen->ptr_sid = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_entries )) == NULL) {
                DEBUG(3, ("init_lsa_sid_enum(): out of memory for ptr_sid\n"));
                return;
        }
 
-       if ((sen->sid = (DOM_SID2 *)talloc_zero(mem_ctx, num_entries * 
-                                          sizeof(DOM_SID2))) == NULL) {
+       if ((sen->sid = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID2, num_entries)) == NULL) {
                DEBUG(3, ("init_lsa_sid_enum(): out of memory for sids\n"));
                return;
        }
@@ -872,15 +870,13 @@ static BOOL lsa_io_sid_enum(const char *desc, LSA_SID_ENUM *sen, prs_struct *ps,
        /* Mallocate memory if we're unpacking from the wire */
 
        if (UNMARSHALLING(ps)) {
-               if ((sen->ptr_sid = (uint32 *)prs_alloc_mem( ps,
-                       sen->num_entries * sizeof(uint32))) == NULL) {
+               if ((sen->ptr_sid = PRS_ALLOC_MEM( ps, uint32, sen->num_entries)) == NULL) {
                        DEBUG(3, ("init_lsa_sid_enum(): out of memory for "
                                  "ptr_sid\n"));
                        return False;
                }
 
-               if ((sen->sid = (DOM_SID2 *)prs_alloc_mem( ps,
-                       sen->num_entries * sizeof(DOM_SID2))) == NULL) {
+               if ((sen->sid = PRS_ALLOC_MEM( ps, DOM_SID2, sen->num_entries)) == NULL) {
                        DEBUG(3, ("init_lsa_sid_enum(): out of memory for "
                                  "sids\n"));
                        return False;
@@ -980,15 +976,11 @@ static BOOL lsa_io_trans_names(const char *desc, LSA_TRANS_NAME_ENUM *trn,
                        return False;
 
                if (UNMARSHALLING(ps)) {
-                       if ((trn->name = (LSA_TRANS_NAME *)
-                            prs_alloc_mem(ps, trn->num_entries * 
-                                   sizeof(LSA_TRANS_NAME))) == NULL) {
+                       if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME, trn->num_entries)) == NULL) {
                                return False;
                        }
 
-                       if ((trn->uni_name = (UNISTR2 *)
-                            prs_alloc_mem(ps, trn->num_entries *
-                                   sizeof(UNISTR2))) == NULL) {
+                       if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries)) == NULL) {
                                return False;
                        }
                }
@@ -1068,14 +1060,12 @@ void init_q_lookup_names(TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l,
        q_l->num_entries2 = num_names;
        q_l->lookup_level = 1;
 
-       if ((q_l->uni_name = (UNISTR2 *)talloc_zero(
-               mem_ctx, num_names * sizeof(UNISTR2))) == NULL) {
+       if ((q_l->uni_name = TALLOC_ZERO_ARRAY(mem_ctx, UNISTR2, num_names)) == NULL) {
                DEBUG(3, ("init_q_lookup_names(): out of memory\n"));
                return;
        }
 
-       if ((q_l->hdr_name = (UNIHDR *)talloc_zero(
-               mem_ctx, num_names * sizeof(UNIHDR))) == NULL) {
+       if ((q_l->hdr_name = TALLOC_ZERO_ARRAY(mem_ctx, UNIHDR, num_names)) == NULL) {
                DEBUG(3, ("init_q_lookup_names(): out of memory\n"));
                return;
        }
@@ -1113,11 +1103,9 @@ BOOL lsa_io_q_lookup_names(const char *desc, LSA_Q_LOOKUP_NAMES *q_r,
 
        if (UNMARSHALLING(ps)) {
                if (q_r->num_entries) {
-                       if ((q_r->hdr_name = (UNIHDR *)prs_alloc_mem(ps,
-                                       q_r->num_entries * sizeof(UNIHDR))) == NULL)
+                       if ((q_r->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_r->num_entries)) == NULL)
                                return False;
-                       if ((q_r->uni_name = (UNISTR2 *)prs_alloc_mem(ps,
-                                       q_r->num_entries * sizeof(UNISTR2))) == NULL)
+                       if ((q_r->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_r->num_entries)) == NULL)
                                return False;
                }
        }
@@ -1187,7 +1175,7 @@ BOOL lsa_io_r_lookup_names(const char *desc, LSA_R_LOOKUP_NAMES *r_r,
                }
 
                if (UNMARSHALLING(ps)) {
-                       if ((r_r->dom_rid = (DOM_RID2 *)prs_alloc_mem(ps, r_r->num_entries2 * sizeof(DOM_RID2)))
+                       if ((r_r->dom_rid = PRS_ALLOC_MEM(ps, DOM_RID2, r_r->num_entries2))
                            == NULL) {
                                DEBUG(3, ("lsa_io_r_lookup_names(): out of memory\n"));
                                return False;
@@ -1409,7 +1397,7 @@ BOOL lsa_io_r_enum_privs(const char *desc, LSA_R_ENUM_PRIVS *r_q, prs_struct *ps
                        return False;
 
                if (UNMARSHALLING(ps))
-                       if (!(r_q->privs = (LSA_PRIV_ENTRY *)prs_alloc_mem(ps, sizeof(LSA_PRIV_ENTRY) * r_q->count1)))
+                       if (!(r_q->privs = PRS_ALLOC_MEM(ps, LSA_PRIV_ENTRY, r_q->count1)))
                                return False;
 
                if (!lsa_io_priv_entries("", r_q->privs, r_q->count1, ps, depth))
@@ -1852,7 +1840,7 @@ BOOL lsa_io_r_enum_privsaccount(const char *desc, LSA_R_ENUMPRIVSACCOUNT *r_c, p
                        if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
                                return False;
 
-                       if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count)))
+                       if (!(r_c->set->set = PRS_ALLOC_MEM(ps,LUID_ATTR,r_c->count)))
                                return False;
 
                }
@@ -2022,7 +2010,7 @@ BOOL lsa_io_q_addprivs(const char *desc, LSA_Q_ADDPRIVS *r_c, prs_struct *ps, in
                if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
                        return False;
                
-               if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count)))
+               if (!(r_c->set->set = PRS_ALLOC_MEM(ps, LUID_ATTR, r_c->count)))
                        return False;
        }
        
@@ -2084,7 +2072,7 @@ BOOL lsa_io_q_removeprivs(const char *desc, LSA_Q_REMOVEPRIVS *r_c, prs_struct *
                        if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
                                return False;
 
-                       if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count)))
+                       if (!(r_c->set->set = PRS_ALLOC_MEM(ps, LUID_ATTR, r_c->count)))
                                return False;
                }
 
index c6f05df0c479b3b845acbaa5ca7d02d9b5581850..17a8f624aee9d0deaa1a7f8305ec47f29cc5e0d6 100644 (file)
@@ -552,18 +552,14 @@ void init_unistr(UNISTR *str, const char *buf)
                return;
        }
                
-
        len = strlen(buf) + 1;
+       len = MAX(len,MAX_UNISTRLEN);
 
-       if (len < MAX_UNISTRLEN)
-               len = MAX_UNISTRLEN;
-       len *= sizeof(uint16);
-
-       str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
+       str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
        if (str->buffer == NULL)
                smb_panic("init_unistr: malloc fail\n");
 
-       rpcstr_push(str->buffer, buf, len, STR_TERMINATE);
+       rpcstr_push(str->buffer, buf, len*sizeof(uint16), STR_TERMINATE);
 }
 
 /*******************************************************************
@@ -591,10 +587,9 @@ BOOL smb_io_unistr(const char *desc, UNISTR *uni, prs_struct *ps, int depth)
 
 static void create_buffer3(BUFFER3 *str, size_t len)
 {
-       if (len < MAX_BUFFERLEN)
-               len = MAX_BUFFERLEN;
+       len = MAX(len,MAX_BUFFERLEN);
 
-    str->buffer = talloc_zero(get_talloc_ctx(), len);
+       str->buffer = TALLOC_ZERO(get_talloc_ctx(), len);
        if (str->buffer == NULL)
                smb_panic("create_buffer3: talloc fail\n");
 
@@ -683,7 +678,7 @@ BOOL smb_io_buffer3(const char *desc, BUFFER3 *buf3, prs_struct *ps, int depth)
                return False;
 
        if (UNMARSHALLING(ps)) {
-               buf3->buffer = (unsigned char *)prs_alloc_mem(ps, buf3->buf_max_len);
+               buf3->buffer = PRS_ALLOC_MEM(ps, unsigned char, buf3->buf_max_len);
                if (buf3->buffer == NULL)
                        return False;
        }
@@ -735,9 +730,8 @@ void init_buffer2(BUFFER2 *str, const uint8 *buf, size_t len)
        str->buf_len = buf != NULL ? len : 0;
 
        if (buf != NULL) {
-               if (len < MAX_BUFFERLEN)
-                       len = MAX_BUFFERLEN;
-               str->buffer = talloc_zero(get_talloc_ctx(), len);
+               len = MAX(len,MAX_BUFFERLEN);
+               str->buffer = TALLOC_ZERO(get_talloc_ctx(), len);
                if (str->buffer == NULL)
                        smb_panic("init_buffer2: talloc fail\n");
                memcpy(str->buffer, buf, MIN(str->buf_len, len));
@@ -819,14 +813,9 @@ void copy_unistr2(UNISTR2 *str, const UNISTR2 *from)
           (the the length of the source string) to prevent
           reallocation of memory. */
        if (str->buffer == NULL) {
-               size_t len = from->uni_max_len * sizeof(uint16);
-
-               if (len < MAX_UNISTRLEN)
-                       len = MAX_UNISTRLEN;
-               len *= sizeof(uint16);
-
-               str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
-               if ((str->buffer == NULL) && (len > 0 )) {
+               size_t alloc_len = MAX(from->uni_max_len,MAX_UNISTRLEN);
+               str->buffer = (uint16 *)TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, alloc_len);
+               if ((str->buffer == NULL)) {
                        smb_panic("copy_unistr2: talloc fail\n");
                        return;
                }
@@ -842,8 +831,6 @@ void copy_unistr2(UNISTR2 *str, const UNISTR2 *from)
 
 void init_string2(STRING2 *str, const char *buf, int max_len, int str_len)
 {
-       int alloc_len = 0;
-
        /* set up string lengths. */
        str->str_max_len = max_len;
        str->offset = 0;
@@ -851,9 +838,8 @@ void init_string2(STRING2 *str, const char *buf, int max_len, int str_len)
 
        /* store the string */
        if(str_len != 0) {
-               if (str_len < MAX_STRINGLEN)
-                       alloc_len = MAX_STRINGLEN;
-               str->buffer = talloc_zero(get_talloc_ctx(), alloc_len);
+               int alloc_len = MAX(str_len, MAX_STRINGLEN);
+               str->buffer = TALLOC_ZERO(get_talloc_ctx(), alloc_len);
                if (str->buffer == NULL)
                        smb_panic("init_string2: malloc fail\n");
                memcpy(str->buffer, buf, str_len);
@@ -917,16 +903,17 @@ void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags)
                len = strlen(buf) + 1;
        }
 
-       if (len < MAX_UNISTRLEN)
-               len = MAX_UNISTRLEN;
-       len *= sizeof(uint16);
+       len = MAX(len,MAX_UNISTRLEN);
 
-       str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
-       if ((str->buffer == NULL) && (len > 0)) {
+       str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
+       if (str->buffer == NULL) {
                smb_panic("init_unistr2: malloc fail\n");
                return;
        }
 
+       /* Ensure len is the length in *bytes* */
+       len *= sizeof(uint16);
+
        /*
         * The UNISTR2 must be initialized !!!
         * jfm, 7/7/2001.
@@ -956,7 +943,6 @@ void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags)
 void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
 {
        uint32 len = strlen_w(buf);
-       uint32 max_len = len;
        uint32 alloc_len;
 
        ZERO_STRUCTP(str);
@@ -966,13 +952,10 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
        str->offset = 0;
        str->uni_str_len = len;
 
-       if (max_len < MAX_UNISTRLEN)
-               max_len = MAX_UNISTRLEN;
+       alloc_len = MAX((len + 1), MAX_UNISTRLEN);
 
-       alloc_len = (max_len + 1) * sizeof(uint16);
-
-       str->buffer = (uint16 *)talloc_zero(ctx, alloc_len);
-       if ((str->buffer == NULL) && (alloc_len > 0)) {
+       str->buffer = TALLOC_ZERO_ARRAY(ctx, uint16, alloc_len);
+       if (str->buffer == NULL) {
                smb_panic("init_unistr2_w: malloc fail\n");
                return;
        }
@@ -1021,10 +1004,10 @@ void init_unistr2_from_unistr(UNISTR2 *to, const UNISTR *from)
        to->uni_str_len = i;
 
        /* allocate the space and copy the string buffer */
-       to->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), sizeof(uint16)*(to->uni_str_len));
+       to->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, i);
        if (to->buffer == NULL)
                smb_panic("init_unistr2_from_unistr: malloc fail\n");
-       memcpy(to->buffer, from->buffer, to->uni_max_len*sizeof(uint16));
+       memcpy(to->buffer, from->buffer, i*sizeof(uint16));
        return;
 }
 
@@ -1111,7 +1094,7 @@ BOOL init_unistr2_array(UNISTR2_ARRAY *array,
                return True;
        }
 
-       array->strings = (UNISTR2_ARRAY_EL *)talloc_zero(get_talloc_ctx(), count * sizeof(UNISTR2_ARRAY_EL));
+       array->strings = TALLOC_ZERO_ARRAY(get_talloc_ctx(), UNISTR2_ARRAY_EL, count );
        if (!array->strings) {
                return False;
        }
@@ -1151,7 +1134,7 @@ BOOL smb_io_unistr2_array(const char *desc, UNISTR2_ARRAY *array, prs_struct *ps
        }
 
        if (UNMARSHALLING(ps)) {
-               array->strings = talloc_zero(get_talloc_ctx(), array->count * sizeof(array->strings[0]));
+               array->strings = TALLOC_ZERO_ARRAY(get_talloc_ctx(), UNISTR2_ARRAY_EL, array->count );
        }
        if (! array->strings) {
                return False;
@@ -1637,7 +1620,7 @@ BOOL smb_io_pol_hnd(const char *desc, POLICY_HND *pol, prs_struct *ps, int depth
 
 void init_unistr3(UNISTR3 *str, const char *buf)
 {
-       size_t len;
+       size_t len, alloc_len;
 
        if (buf == NULL) {
                str->uni_str_len=0;
@@ -1649,16 +1632,13 @@ void init_unistr3(UNISTR3 *str, const char *buf)
 
        str->uni_str_len=len;
 
-       if (len < MAX_UNISTRLEN)
-               len = MAX_UNISTRLEN;
-
-       len *= sizeof(uint16);
+       alloc_len = MAX(len, MAX_UNISTRLEN);
 
-       str->str.buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
+       str->str.buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, alloc_len);
        if (str->str.buffer == NULL)
                smb_panic("init_unistr3: malloc fail\n");
 
-       rpcstr_push((char *)str->str.buffer, buf, len, STR_TERMINATE);
+       rpcstr_push((char *)str->str.buffer, buf, len * sizeof(uint16), STR_TERMINATE);
 }
 
 /*******************************************************************
index 813316177ac74e2f2a7dede2b87439ea0b7ffd7c..97ca0d406b4dffde898bd16e1698cc99688c24bd 100644 (file)
@@ -1019,7 +1019,7 @@ static int init_dom_sid2s(TALLOC_CTX *ctx, const char *sids_str, DOM_SID2 **ppsi
                }
 
                /* Now allocate space for them. */
-               *ppsids = (DOM_SID2 *)talloc_zero(ctx, count * sizeof(DOM_SID2));
+               *ppsids = TALLOC_ZERO_ARRAY(ctx, DOM_SID2, count);
                if (*ppsids == NULL)
                        return 0;
 
@@ -1310,7 +1310,7 @@ static BOOL net_io_id_info_ctr(const char *desc, NET_ID_INFO_CTR **pp_ctr, prs_s
        depth++;
 
        if (UNMARSHALLING(ps)) {
-               ctr = *pp_ctr = (NET_ID_INFO_CTR *)prs_alloc_mem(ps, sizeof(NET_ID_INFO_CTR));
+               ctr = *pp_ctr = PRS_ALLOC_MEM(ps, NET_ID_INFO_CTR, 1);
                if (ctr == NULL)
                        return False;
        }
@@ -1481,7 +1481,7 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
 
        usr->num_groups2 = num_groups;
 
-       usr->gids = (DOM_GID *)talloc_zero(ctx,sizeof(DOM_GID) * (num_groups));
+       usr->gids = TALLOC_ZERO_ARRAY(ctx,DOM_GID,num_groups);
        if (usr->gids == NULL && num_groups>0)
                return;
 
@@ -1614,7 +1614,7 @@ BOOL net_io_user_info3(const char *desc, NET_USER_INFO_3 *usr, prs_struct *ps,
                return False;
 
        if (UNMARSHALLING(ps) && usr->num_groups2 > 0) {
-               usr->gids = (DOM_GID *)prs_alloc_mem(ps, sizeof(DOM_GID)*usr->num_groups2);
+               usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups2);
                if (usr->gids == NULL)
                        return False;
        }
@@ -1635,7 +1635,7 @@ BOOL net_io_user_info3(const char *desc, NET_USER_INFO_3 *usr, prs_struct *ps,
        if (usr->num_other_sids) {
 
                if (UNMARSHALLING(ps)) {
-                       usr->other_sids = (DOM_SID2 *)prs_alloc_mem(ps, sizeof(DOM_SID2)*usr->num_other_sids);
+                       usr->other_sids = PRS_ALLOC_MEM(ps, DOM_SID2, usr->num_other_sids);
                        if (usr->other_sids == NULL)
                                return False;
                }
@@ -1644,7 +1644,7 @@ BOOL net_io_user_info3(const char *desc, NET_USER_INFO_3 *usr, prs_struct *ps,
                        return False;
 
                if (UNMARSHALLING(ps) && usr->num_other_groups > 0) {
-                       usr->other_gids = (DOM_GID *)prs_alloc_mem(ps, sizeof(DOM_GID)*usr->num_other_groups);
+                       usr->other_gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_other_groups);
                        if (usr->other_gids == NULL)
                                return False;
                }
@@ -2322,8 +2322,7 @@ static BOOL net_io_sam_group_mem_info(const char *desc, SAM_GROUP_MEM_INFO * inf
                        return False;
                }
 
-                info->rids = talloc(ps->mem_ctx, sizeof(uint32) *
-                                    info->num_members2);
+                info->rids = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_members2);
 
                 if (info->rids == NULL) {
                         DEBUG(0, ("out of memory allocating %d rids\n",
@@ -2350,8 +2349,7 @@ static BOOL net_io_sam_group_mem_info(const char *desc, SAM_GROUP_MEM_INFO * inf
                        return False;
                }
 
-                info->attribs = talloc(ps->mem_ctx, sizeof(uint32) *
-                                       info->num_members3);
+                info->attribs = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_members3);
 
                 if (info->attribs == NULL) {
                         DEBUG(0, ("out of memory allocating %d attribs\n",
@@ -2438,8 +2436,7 @@ static BOOL net_io_sam_alias_mem_info(const char *desc, SAM_ALIAS_MEM_INFO * inf
                        return False;
                }
 
-                info->ptr_sids = talloc(ps->mem_ctx, sizeof(uint32) *
-                                        info->num_sids);
+                info->ptr_sids = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_sids);
                 
                 if (info->ptr_sids == NULL) {
                         DEBUG(0, ("out of memory allocating %d ptr_sids\n",
@@ -2454,8 +2451,7 @@ static BOOL net_io_sam_alias_mem_info(const char *desc, SAM_ALIAS_MEM_INFO * inf
                                 return False;
                }
 
-                info->sids = talloc(ps->mem_ctx, sizeof(DOM_SID2) *
-                                    info->num_sids);
+                info->sids = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, info->num_sids);
 
                 if (info->sids == NULL) {
                         DEBUG(0, ("error allocating %d sids\n",
@@ -2772,7 +2768,7 @@ static BOOL net_io_sam_privs_info(const char *desc, SAM_DELTA_PRIVS *info,
        if(!prs_uint32("attribute_count", ps, depth, &info->attribute_count))
                 return False;
 
-       info->attributes = talloc(ps->mem_ctx, sizeof(uint32) * info->attribute_count);
+       info->attributes = TALLOC_ARRAY(ps->mem_ctx, uint32, info->attribute_count);
 
        for (i=0; i<info->attribute_count; i++)
                if(!prs_uint32("attributes", ps, depth, &info->attributes[i]))
@@ -2781,8 +2777,8 @@ static BOOL net_io_sam_privs_info(const char *desc, SAM_DELTA_PRIVS *info,
        if(!prs_uint32("privlist_count", ps, depth, &info->privlist_count))
                 return False;
 
-       info->hdr_privslist = talloc(ps->mem_ctx, sizeof(UNIHDR) * info->privlist_count);
-       info->uni_privslist = talloc(ps->mem_ctx, sizeof(UNISTR2) * info->privlist_count);
+       info->hdr_privslist = TALLOC_ARRAY(ps->mem_ctx, UNIHDR, info->privlist_count);
+       info->uni_privslist = TALLOC_ARRAY(ps->mem_ctx, UNISTR2, info->privlist_count);
 
        for (i=0; i<info->privlist_count; i++)
                if(!smb_io_unihdr("hdr_privslist", &info->hdr_privslist[i], ps, depth))
@@ -2914,10 +2910,7 @@ BOOL net_io_r_sam_sync(const char *desc, uint8 sess_key[16],
                        }
 
                         if (r_s->num_deltas2 > 0) {
-                                r_s->hdr_deltas = (SAM_DELTA_HDR *)
-                                        talloc(ps->mem_ctx, r_s->num_deltas2 *
-                                               sizeof(SAM_DELTA_HDR));
-                          
+                                r_s->hdr_deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_HDR, r_s->num_deltas2);
                                 if (r_s->hdr_deltas == NULL) {
                                         DEBUG(0, ("error tallocating memory "
                                                   "for %d delta headers\n", 
@@ -2935,10 +2928,7 @@ BOOL net_io_r_sam_sync(const char *desc, uint8 sess_key[16],
                        }
 
                         if (r_s->num_deltas2 > 0) {
-                                r_s->deltas = (SAM_DELTA_CTR *)
-                                        talloc(ps->mem_ctx, r_s->num_deltas2 *
-                                               sizeof(SAM_DELTA_CTR));
-
+                                r_s->deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_CTR, r_s->num_deltas2);
                                 if (r_s->deltas == NULL) {
                                         DEBUG(0, ("error tallocating memory "
                                                   "for %d deltas\n", 
@@ -3050,9 +3040,7 @@ BOOL net_io_r_sam_deltas(const char *desc, uint8 sess_key[16],
                if (r_s->ptr_deltas != 0)
                {
                         if (r_s->num_deltas > 0) {
-                                r_s->hdr_deltas = (SAM_DELTA_HDR *)
-                                        talloc(ps->mem_ctx, r_s->num_deltas *
-                                               sizeof(SAM_DELTA_HDR));
+                                r_s->hdr_deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_HDR, r_s->num_deltas);
                                 if (r_s->hdr_deltas == NULL) {
                                         DEBUG(0, ("error tallocating memory "
                                                   "for %d delta headers\n", 
@@ -3068,10 +3056,7 @@ BOOL net_io_r_sam_deltas(const char *desc, uint8 sess_key[16],
                        }
                         
                         if (r_s->num_deltas > 0) {
-                                r_s->deltas = (SAM_DELTA_CTR *)
-                                        talloc(ps->mem_ctx, r_s->num_deltas *
-                                               sizeof(SAM_DELTA_CTR));
-
+                                r_s->deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_CTR, r_s->num_deltas);
                                 if (r_s->deltas == NULL) {
                                         DEBUG(0, ("error tallocating memory "
                                                   "for %d deltas\n", 
index c70011c6484c3bfac8af2ee6b1d60b4fa0607195..67a9d96e19ac05cfe6872a98846c0b3e268c61ba 100644 (file)
@@ -105,7 +105,7 @@ BOOL prs_init(prs_struct *ps, uint32 size, TALLOC_CTX *ctx, BOOL io)
 
        if (size != 0) {
                ps->buffer_size = size;
-               if((ps->data_p = (char *)malloc((size_t)size)) == NULL) {
+               if((ps->data_p = (char *)SMB_MALLOC((size_t)size)) == NULL) {
                        DEBUG(0,("prs_init: malloc fail for %u bytes.\n", (unsigned int)size));
                        return False;
                }
@@ -143,14 +143,21 @@ void prs_mem_clear(prs_struct *ps)
  Allocate memory when unmarshalling... Always zero clears.
  ********************************************************************/
 
-char *prs_alloc_mem(prs_struct *ps, size_t size)
+#if defined(PARANOID_MALLOC_CHECKER)
+char *prs_alloc_mem_(prs_struct *ps, size_t size, unsigned int count)
+#else
+char *prs_alloc_mem(prs_struct *ps, size_t size, unsigned int count)
+#endif
 {
        char *ret = NULL;
 
        if (size) {
-               ret = talloc(ps->mem_ctx, size);
-               if (ret)
-                       memset(ret, '\0', size);
+               /* We can't call the type-safe version here. */
+#if defined(PARANOID_MALLOC_CHECKER)
+               ret = talloc_zero_array_(ps->mem_ctx, size, count);
+#else
+               ret = talloc_zero_array(ps->mem_ctx, size, count);
+#endif
        }
        return ret;
 }
@@ -199,7 +206,7 @@ BOOL prs_set_buffer_size(prs_struct *ps, uint32 newsize)
                return prs_force_grow(ps, newsize - ps->buffer_size);
 
        if (newsize < ps->buffer_size) {
-               char *new_data_p = Realloc(ps->data_p, newsize);
+               char *new_data_p = SMB_REALLOC(ps->data_p, newsize);
                /* if newsize is zero, Realloc acts like free() & returns NULL*/
                if (new_data_p == NULL && newsize != 0) {
                        DEBUG(0,("prs_set_buffer_size: Realloc failure for size %u.\n",
@@ -253,7 +260,7 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
 
                new_size = MAX(MAX_PDU_FRAG_LEN,extra_space);
 
-               if((new_data = malloc(new_size)) == NULL) {
+               if((new_data = SMB_MALLOC(new_size)) == NULL) {
                        DEBUG(0,("prs_grow: Malloc failure for size %u.\n", (unsigned int)new_size));
                        return False;
                }
@@ -265,7 +272,7 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
                 */
                new_size = MAX(ps->buffer_size*2, ps->buffer_size + extra_space);               
 
-               if ((new_data = Realloc(ps->data_p, new_size)) == NULL) {
+               if ((new_data = SMB_REALLOC(ps->data_p, new_size)) == NULL) {
                        DEBUG(0,("prs_grow: Realloc failure for size %u.\n",
                                (unsigned int)new_size));
                        return False;
@@ -296,7 +303,7 @@ BOOL prs_force_grow(prs_struct *ps, uint32 extra_space)
                return False;
        }
 
-       if((new_data = Realloc(ps->data_p, new_size)) == NULL) {
+       if((new_data = SMB_REALLOC(ps->data_p, new_size)) == NULL) {
                DEBUG(0,("prs_force_grow: Realloc failure for size %u.\n",
                        (unsigned int)new_size));
                return False;
@@ -886,7 +893,7 @@ BOOL prs_buffer5(BOOL charmode, const char *name, prs_struct *ps, int depth, BUF
                return False;
 
        if (UNMARSHALLING(ps)) {
-               str->buffer = (uint16 *)prs_alloc_mem(ps,str->buf_len * sizeof(uint16));
+               str->buffer = PRS_ALLOC_MEM(ps,uint16,str->buf_len);
                if (str->buffer == NULL)
                        return False;
        }
@@ -918,7 +925,7 @@ BOOL prs_buffer2(BOOL charmode, const char *name, prs_struct *ps, int depth, BUF
 
        if (UNMARSHALLING(ps)) {
                if ( str->buf_len ) {
-                       str->buffer = (uint16 *)prs_alloc_mem(ps,str->buf_len);
+                       str->buffer = PRS_ALLOC_MEM(ps, uint16, str->buf_len);
                        if ( str->buffer == NULL )
                                return False;
                }
@@ -945,7 +952,7 @@ BOOL prs_string2(BOOL charmode, const char *name, prs_struct *ps, int depth, STR
                return False;
 
        if (UNMARSHALLING(ps)) {
-               str->buffer = (unsigned char *)prs_alloc_mem(ps,str->str_max_len);
+               str->buffer = PRS_ALLOC_MEM(ps,unsigned char, str->str_max_len);
                if (str->buffer == NULL)
                        return False;
        }
@@ -989,7 +996,7 @@ BOOL prs_unistr2(BOOL charmode, const char *name, prs_struct *ps, int depth, UNI
                return True;
 
        if (UNMARSHALLING(ps)) {
-               str->buffer = (uint16 *)prs_alloc_mem(ps,str->uni_max_len * sizeof(uint16));
+               str->buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_max_len);
                if (str->buffer == NULL)
                        return False;
        }
@@ -1016,7 +1023,7 @@ BOOL prs_unistr3(BOOL charmode, const char *name, UNISTR3 *str, prs_struct *ps,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               str->str.buffer = (uint16 *)prs_alloc_mem(ps,str->uni_str_len * sizeof(uint16));
+               str->str.buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_str_len);
                if (str->str.buffer == NULL)
                        return False;
        }
@@ -1109,7 +1116,7 @@ BOOL prs_unistr(const char *name, prs_struct *ps, int depth, UNISTR *str)
                        alloc_len += 1;
 
                /* should we allocate anything at all? */
-               str->buffer = (uint16 *)prs_alloc_mem(ps,alloc_len * sizeof(uint16));
+               str->buffer = PRS_ALLOC_MEM(ps,uint16,alloc_len);
                if ((str->buffer == NULL) && (alloc_len > 0))
                        return False;
 
index ddae4bbdff9c4c081b00a7058a4b6cd2312034f1..34f48b9ad74470e0d464476e73b4f3546174120a 100644 (file)
@@ -1401,8 +1401,8 @@ BOOL samr_io_r_enum_dom_users(const char *desc, SAMR_R_ENUM_DOM_USERS * r_u,
                        return False;
 
                if (UNMARSHALLING(ps) && (r_u->num_entries2 != 0)) {
-                       r_u->sam = (SAM_ENTRY *)prs_alloc_mem(ps,sizeof(SAM_ENTRY)*r_u->num_entries2);
-                       r_u->uni_acct_name = (UNISTR2 *)prs_alloc_mem(ps,sizeof(UNISTR2)*r_u->num_entries2);
+                       r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY, r_u->num_entries2);
+                       r_u->uni_acct_name = PRS_ALLOC_MEM(ps,UNISTR2, r_u->num_entries2);
                }
 
                if ((r_u->sam == NULL || r_u->uni_acct_name == NULL) && r_u->num_entries2 != 0) {
@@ -1506,11 +1506,11 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en
        if (num_entries==0)
                return NT_STATUS_OK;
 
-       sam->sam=(SAM_ENTRY1 *)talloc(ctx, num_entries*sizeof(SAM_ENTRY1));
+       sam->sam=TALLOC_ARRAY(ctx, SAM_ENTRY1, num_entries);
        if (!sam->sam)
                return NT_STATUS_NO_MEMORY;
 
-       sam->str=(SAM_STR1 *)talloc(ctx, num_entries*sizeof(SAM_STR1));
+       sam->str=TALLOC_ARRAY(ctx, SAM_STR1, num_entries);
        if (!sam->str)
                return NT_STATUS_NO_MEMORY;
 
@@ -1584,16 +1584,12 @@ static BOOL sam_io_sam_dispinfo_1(const char *desc, SAM_DISPINFO_1 * sam,
 
        if (UNMARSHALLING(ps) && num_entries > 0) {
 
-               if ((sam->sam = (SAM_ENTRY1 *)
-                    prs_alloc_mem(ps, sizeof(SAM_ENTRY1) *
-                                  num_entries)) == NULL) {
+               if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY1, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_ENTRY1\n"));
                        return False;
                }
 
-               if ((sam->str = (SAM_STR1 *)
-                    prs_alloc_mem(ps, sizeof(SAM_STR1) * 
-                                  num_entries)) == NULL) {
+               if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR1, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_STR1\n"));
                        return False;
                }
@@ -1633,10 +1629,10 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en
        if (num_entries==0)
                return NT_STATUS_OK;
 
-       if (!(sam->sam=(SAM_ENTRY2 *)talloc(ctx, num_entries*sizeof(SAM_ENTRY2))))
+       if (!(sam->sam=TALLOC_ARRAY(ctx, SAM_ENTRY2, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
-       if (!(sam->str=(SAM_STR2 *)talloc(ctx, num_entries*sizeof(SAM_STR2))))
+       if (!(sam->str=TALLOC_ARRAY(ctx, SAM_STR2, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(sam->sam);
@@ -1697,16 +1693,12 @@ static BOOL sam_io_sam_dispinfo_2(const char *desc, SAM_DISPINFO_2 * sam,
 
        if (UNMARSHALLING(ps) && num_entries > 0) {
 
-               if ((sam->sam = (SAM_ENTRY2 *)
-                    prs_alloc_mem(ps, sizeof(SAM_ENTRY2) *
-                                  num_entries)) == NULL) {
+               if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY2, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_ENTRY2\n"));
                        return False;
                }
 
-               if ((sam->str = (SAM_STR2 *)
-                    prs_alloc_mem(ps, sizeof(SAM_STR2) * 
-                                  num_entries)) == NULL) {
+               if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR2, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_STR2\n"));
                        return False;
                }
@@ -1743,10 +1735,10 @@ NTSTATUS init_sam_dispinfo_3(TALLOC_CTX *ctx, SAM_DISPINFO_3 *sam, uint32 num_en
        if (num_entries==0)
                return NT_STATUS_OK;
 
-       if (!(sam->sam=(SAM_ENTRY3 *)talloc(ctx, num_entries*sizeof(SAM_ENTRY3))))
+       if (!(sam->sam=TALLOC_ARRAY(ctx, SAM_ENTRY3, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
-       if (!(sam->str=(SAM_STR3 *)talloc(ctx, num_entries*sizeof(SAM_STR3))))
+       if (!(sam->str=TALLOC_ARRAY(ctx, SAM_STR3, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(sam->sam);
@@ -1788,16 +1780,12 @@ static BOOL sam_io_sam_dispinfo_3(const char *desc, SAM_DISPINFO_3 * sam,
 
        if (UNMARSHALLING(ps) && num_entries > 0) {
 
-               if ((sam->sam = (SAM_ENTRY3 *)
-                    prs_alloc_mem(ps, sizeof(SAM_ENTRY3) *
-                                  num_entries)) == NULL) {
+               if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY3, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_ENTRY3\n"));
                        return False;
                }
 
-               if ((sam->str = (SAM_STR3 *)
-                    prs_alloc_mem(ps, sizeof(SAM_STR3) * 
-                                  num_entries)) == NULL) {
+               if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR3, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_STR3\n"));
                        return False;
                }
@@ -1836,10 +1824,10 @@ NTSTATUS init_sam_dispinfo_4(TALLOC_CTX *ctx, SAM_DISPINFO_4 *sam, uint32 num_en
        if (num_entries==0)
                return NT_STATUS_OK;
 
-       if (!(sam->sam=(SAM_ENTRY4 *)talloc(ctx, num_entries*sizeof(SAM_ENTRY4))))
+       if (!(sam->sam=TALLOC_ARRAY(ctx, SAM_ENTRY4, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
-       if (!(sam->str=(SAM_STR4 *)talloc(ctx, num_entries*sizeof(SAM_STR4))))
+       if (!(sam->str=TALLOC_ARRAY(ctx, SAM_STR4, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(sam->sam);
@@ -1880,16 +1868,12 @@ static BOOL sam_io_sam_dispinfo_4(const char *desc, SAM_DISPINFO_4 * sam,
 
        if (UNMARSHALLING(ps) && num_entries > 0) {
 
-               if ((sam->sam = (SAM_ENTRY4 *)
-                    prs_alloc_mem(ps, sizeof(SAM_ENTRY4) *
-                                  num_entries)) == NULL) {
+               if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY4, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_ENTRY4\n"));
                        return False;
                }
 
-               if ((sam->str = (SAM_STR4 *)
-                    prs_alloc_mem(ps, sizeof(SAM_STR4) * 
-                                  num_entries)) == NULL) {
+               if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR4, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_STR4\n"));
                        return False;
                }
@@ -1926,10 +1910,10 @@ NTSTATUS init_sam_dispinfo_5(TALLOC_CTX *ctx, SAM_DISPINFO_5 *sam, uint32 num_en
        if (num_entries==0)
                return NT_STATUS_OK;
 
-       if (!(sam->sam=(SAM_ENTRY5 *)talloc(ctx, num_entries*sizeof(SAM_ENTRY5))))
+       if (!(sam->sam=TALLOC_ARRAY(ctx, SAM_ENTRY5, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
-       if (!(sam->str=(SAM_STR5 *)talloc(ctx, num_entries*sizeof(SAM_STR5))))
+       if (!(sam->str=TALLOC_ARRAY(ctx, SAM_STR5, num_entries)))
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(sam->sam);
@@ -1970,16 +1954,12 @@ static BOOL sam_io_sam_dispinfo_5(const char *desc, SAM_DISPINFO_5 * sam,
 
        if (UNMARSHALLING(ps) && num_entries > 0) {
 
-               if ((sam->sam = (SAM_ENTRY5 *)
-                    prs_alloc_mem(ps, sizeof(SAM_ENTRY5) *
-                                  num_entries)) == NULL) {
+               if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY5, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_ENTRY5\n"));
                        return False;
                }
 
-               if ((sam->str = (SAM_STR5 *)
-                    prs_alloc_mem(ps, sizeof(SAM_STR5) * 
-                                  num_entries)) == NULL) {
+               if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR5, num_entries)) == NULL) {
                        DEBUG(0, ("out of memory allocating SAM_STR5\n"));
                        return False;
                }
@@ -2354,7 +2334,7 @@ static BOOL samr_group_info_ctr(const char *desc, GROUP_INFO_CTR **ctr,
                                prs_struct *ps, int depth)
 {
        if (UNMARSHALLING(ps))
-               *ctr = (GROUP_INFO_CTR *)prs_alloc_mem(ps,sizeof(GROUP_INFO_CTR));
+               *ctr = PRS_ALLOC_MEM(ps,GROUP_INFO_CTR,1);
 
        if (*ctr == NULL)
                return False;
@@ -2929,7 +2909,7 @@ BOOL samr_io_r_query_groupmem(const char *desc, SAMR_R_QUERY_GROUPMEM * r_u,
                        if(!prs_uint32("num_rids", ps, depth, &r_u->num_rids))
                                return False;
                        if (UNMARSHALLING(ps) && r_u->num_rids != 0) {
-                               r_u->rid = (uint32 *)prs_alloc_mem(ps,sizeof(r_u->rid[0])*r_u->num_rids);
+                               r_u->rid = PRS_ALLOC_MEM(ps,uint32,r_u->num_rids);
                                if (r_u->rid == NULL)
                                        return False;
                        }
@@ -2945,7 +2925,7 @@ BOOL samr_io_r_query_groupmem(const char *desc, SAMR_R_QUERY_GROUPMEM * r_u,
                                return False;
 
                        if (UNMARSHALLING(ps) && r_u->num_attrs != 0) {
-                               r_u->attr = (uint32 *)prs_alloc_mem(ps,sizeof(r_u->attr[0])*r_u->num_attrs);
+                               r_u->attr = PRS_ALLOC_MEM(ps,uint32,r_u->num_attrs);
                                if (r_u->attr == NULL)
                                        return False;
                        }
@@ -3046,7 +3026,7 @@ BOOL samr_io_gids(const char *desc, uint32 *num_gids, DOM_GID ** gid,
 
        if ((*num_gids) != 0) {
                if (UNMARSHALLING(ps)) {
-                       (*gid) = (DOM_GID *)prs_alloc_mem(ps,sizeof(DOM_GID)*(*num_gids));
+                       (*gid) = PRS_ALLOC_MEM(ps,DOM_GID,*num_gids);
                }
 
                if ((*gid) == NULL) {
@@ -3201,8 +3181,8 @@ BOOL samr_io_r_enum_domains(const char *desc, SAMR_R_ENUM_DOMAINS * r_u,
                        return False;
 
                if (UNMARSHALLING(ps)) {
-                       r_u->sam = (SAM_ENTRY *)prs_alloc_mem(ps,sizeof(SAM_ENTRY)*r_u->num_entries2);
-                       r_u->uni_dom_name = (UNISTR2 *)prs_alloc_mem(ps,sizeof(UNISTR2)*r_u->num_entries2);
+                       r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
+                       r_u->uni_dom_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
                }
 
                if ((r_u->sam == NULL || r_u->uni_dom_name == NULL) && r_u->num_entries2 != 0) {
@@ -3340,8 +3320,8 @@ BOOL samr_io_r_enum_dom_groups(const char *desc, SAMR_R_ENUM_DOM_GROUPS * r_u,
                        return False;
 
                if (UNMARSHALLING(ps)) {
-                       r_u->sam = (SAM_ENTRY *)prs_alloc_mem(ps,sizeof(SAM_ENTRY)*r_u->num_entries2);
-                       r_u->uni_grp_name = (UNISTR2 *)prs_alloc_mem(ps,sizeof(UNISTR2)*r_u->num_entries2);
+                       r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
+                       r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
                }
 
                if ((r_u->sam == NULL || r_u->uni_grp_name == NULL) && r_u->num_entries2 != 0) {
@@ -3474,8 +3454,8 @@ BOOL samr_io_r_enum_dom_aliases(const char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u,
                        return False;
 
                if (UNMARSHALLING(ps) && (r_u->num_entries2 > 0)) {
-                       r_u->sam = (SAM_ENTRY *)prs_alloc_mem(ps,sizeof(SAM_ENTRY)*r_u->num_entries2);
-                       r_u->uni_grp_name = (UNISTR2 *)prs_alloc_mem(ps,sizeof(UNISTR2)*r_u->num_entries2);
+                       r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
+                       r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
                }
 
                if (r_u->num_entries2 != 0 && 
@@ -3832,11 +3812,11 @@ BOOL samr_io_q_query_useraliases(const char *desc, SAMR_Q_QUERY_USERALIASES * q_
                return False;
 
        if (UNMARSHALLING(ps) && (q_u->num_sids2 != 0)) {
-               q_u->ptr_sid = (uint32 *)prs_alloc_mem(ps,sizeof(q_u->ptr_sid[0])*q_u->num_sids2);
+               q_u->ptr_sid = PRS_ALLOC_MEM(ps,uint32,q_u->num_sids2);
                if (q_u->ptr_sid == NULL)
                        return False;
 
-               q_u->sid = (DOM_SID2 *)prs_alloc_mem(ps, sizeof(q_u->sid[0]) * q_u->num_sids2);
+               q_u->sid = PRS_ALLOC_MEM(ps, DOM_SID2, q_u->num_sids2);
                if (q_u->sid == NULL)
                        return False;
        }
@@ -3907,7 +3887,7 @@ BOOL samr_io_rids(const char *desc, uint32 *num_rids, uint32 **rid,
        if ((*num_rids) != 0) {
                if (UNMARSHALLING(ps)) {
                        /* reading */
-                       (*rid) = (uint32 *)prs_alloc_mem(ps,sizeof(uint32)*(*num_rids));
+                       (*rid) = PRS_ALLOC_MEM(ps,uint32, *num_rids);
                }
                if ((*rid) == NULL)
                        return False;
@@ -4038,7 +4018,7 @@ void init_samr_q_lookup_rids(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_RIDS * q_u,
        q_u->flags = flags;
        q_u->ptr = 0;
        q_u->num_rids2 = num_rids;
-       q_u->rid = (uint32 *)talloc_zero(ctx, num_rids * sizeof(q_u->rid[0]));
+       q_u->rid = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids );
        if (q_u->rid == NULL) {
                q_u->num_rids1 = 0;
                q_u->num_rids2 = 0;
@@ -4082,7 +4062,7 @@ BOOL samr_io_q_lookup_rids(const char *desc, SAMR_Q_LOOKUP_RIDS * q_u,
                return False;
 
        if (UNMARSHALLING(ps) && (q_u->num_rids2 != 0)) {
-               q_u->rid = (uint32 *)prs_alloc_mem(ps, sizeof(q_u->rid[0])*q_u->num_rids2);
+               q_u->rid = PRS_ALLOC_MEM(ps, uint32, q_u->num_rids2);
                if (q_u->rid == NULL)
                        return False;
        }
@@ -4163,11 +4143,11 @@ BOOL samr_io_r_lookup_rids(const char *desc, SAMR_R_LOOKUP_RIDS * r_u,
 
 
                if (UNMARSHALLING(ps) && (r_u->num_names2 != 0)) {
-                       r_u->hdr_name = (UNIHDR *) prs_alloc_mem(ps, r_u->num_names2 * sizeof(r_u->hdr_name[0]));
+                       r_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, r_u->num_names2);
                        if (r_u->hdr_name == NULL)
                                return False;
 
-                       r_u->uni_name = (UNISTR2 *)prs_alloc_mem(ps, r_u->num_names2 * sizeof(r_u->uni_name[0]));
+                       r_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, r_u->num_names2);
                        if (r_u->uni_name == NULL)
                                return False;
                }
@@ -4198,7 +4178,7 @@ BOOL samr_io_r_lookup_rids(const char *desc, SAMR_R_LOOKUP_RIDS * r_u,
                        return False;
 
                if (UNMARSHALLING(ps) && (r_u->num_types2 != 0)) {
-                       r_u->type = (uint32 *)prs_alloc_mem(ps, r_u->num_types2 * sizeof(r_u->type[0]));
+                       r_u->type = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2);
                        if (r_u->type == NULL)
                                return False;
                }
@@ -4624,7 +4604,7 @@ BOOL samr_io_r_query_aliasmem(const char *desc, SAMR_R_QUERY_ALIASMEM * r_u,
                if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
                        return False;
 
-               ptr_sid = talloc(ps->mem_ctx, sizeof(uint32) * r_u->num_sids1);
+               ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
                if (!ptr_sid) {
                        return False;
                }
@@ -4636,7 +4616,7 @@ BOOL samr_io_r_query_aliasmem(const char *desc, SAMR_R_QUERY_ALIASMEM * r_u,
                }
                
                if (UNMARSHALLING(ps)) {
-                       r_u->sid = talloc(ps->mem_ctx, r_u->num_sids1 * sizeof(DOM_SID2));
+                       r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
                }
                
                for (i = 0; i < r_u->num_sids1; i++) {
@@ -4674,10 +4654,10 @@ NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u,
        q_u->ptr = 0;
        q_u->num_names2 = num_names;
 
-       if (!(q_u->hdr_name = (UNIHDR *)talloc_zero(ctx, num_names * sizeof(UNIHDR))))
+       if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names)))
                return NT_STATUS_NO_MEMORY;
 
-       if (!(q_u->uni_name = (UNISTR2 *)talloc_zero(ctx, num_names * sizeof(UNISTR2))))
+       if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names)))
                return NT_STATUS_NO_MEMORY;
 
        for (i = 0; i < num_names; i++) {
@@ -4722,10 +4702,8 @@ BOOL samr_io_q_lookup_names(const char *desc, SAMR_Q_LOOKUP_NAMES * q_u,
                return False;
 
        if (UNMARSHALLING(ps) && (q_u->num_names2 != 0)) {
-               q_u->hdr_name = (UNIHDR *)prs_alloc_mem(ps, sizeof(UNIHDR) *
-                                                       q_u->num_names2);
-               q_u->uni_name = (UNISTR2 *)prs_alloc_mem(ps, sizeof(UNISTR2) *
-                                                        q_u->num_names2);
+               q_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_u->num_names2);
+               q_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_u->num_names2);
                if (!q_u->hdr_name || !q_u->uni_name)
                        return False;
        }
@@ -4765,9 +4743,9 @@ NTSTATUS init_samr_r_lookup_names(TALLOC_CTX *ctx, SAMR_R_LOOKUP_NAMES * r_u,
                r_u->ptr_rids = 1;
                r_u->num_rids2 = num_rids;
 
-               if (!(r_u->rids = (uint32 *)talloc_zero(ctx, sizeof(uint32)*num_rids)))
+               if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
                        return NT_STATUS_NO_MEMORY;
-               if (!(r_u->types = (uint32 *)talloc_zero(ctx, sizeof(uint32)*num_rids)))
+               if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
                        return NT_STATUS_NO_MEMORY;
 
                if (!r_u->rids || !r_u->types)
@@ -4834,7 +4812,7 @@ BOOL samr_io_r_lookup_names(const char *desc, SAMR_R_LOOKUP_NAMES * r_u,
                }
 
                if (UNMARSHALLING(ps))
-                       r_u->rids = (uint32 *)prs_alloc_mem(ps, sizeof(uint32)*r_u->num_rids2);
+                       r_u->rids = PRS_ALLOC_MEM(ps, uint32, r_u->num_rids2);
 
                if (!r_u->rids) {
                        DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n"));
@@ -4863,7 +4841,7 @@ BOOL samr_io_r_lookup_names(const char *desc, SAMR_R_LOOKUP_NAMES * r_u,
                }
 
                if (UNMARSHALLING(ps))
-                       r_u->types = (uint32 *)prs_alloc_mem(ps, sizeof(uint32)*r_u->num_types2);
+                       r_u->types = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2);
 
                if (!r_u->types) {
                        DEBUG(0, ("NULL types in samr_io_r_lookup_names\n"));
@@ -6282,7 +6260,7 @@ NTSTATUS make_samr_userinfo_ctr_usr21(TALLOC_CTX *ctx, SAM_USERINFO_CTR * ctr,
 
        switch (switch_value) {
        case 0x10:
-               ctr->info.id10 = (SAM_USER_INFO_10 *)talloc_zero(ctx,sizeof(SAM_USER_INFO_10));
+               ctr->info.id10 = TALLOC_ZERO_P(ctx,SAM_USER_INFO_10);
                if (ctr->info.id10 == NULL)
                        return NT_STATUS_NO_MEMORY;
 
@@ -6298,7 +6276,7 @@ NTSTATUS make_samr_userinfo_ctr_usr21(TALLOC_CTX *ctx, SAM_USERINFO_CTR * ctr,
                        expire.low = 0xffffffff;
                        expire.high = 0x7fffffff;
 
-                       ctr->info.id = (SAM_USER_INFO_11 *) talloc_zero(ctx,sizeof(*ctr->info.id11));
+                       ctr->info.id = TALLOC_ZERO_P(ctx,SAM_USER_INFO_11);
                        init_sam_user_info11(ctr->info.id11, &expire,
                                             "BROOKFIELDS$",    /* name */
                                             0x03ef,    /* user rid */
@@ -6309,7 +6287,7 @@ NTSTATUS make_samr_userinfo_ctr_usr21(TALLOC_CTX *ctx, SAM_USERINFO_CTR * ctr,
                }
 #endif
        case 0x12:
-               ctr->info.id12 = (SAM_USER_INFO_12 *)talloc_zero(ctx,sizeof(SAM_USER_INFO_12));
+               ctr->info.id12 = TALLOC_ZERO_P(ctx,SAM_USER_INFO_12);
                if (ctr->info.id12 == NULL)
                        return NT_STATUS_NO_MEMORY;
 
@@ -6318,7 +6296,7 @@ NTSTATUS make_samr_userinfo_ctr_usr21(TALLOC_CTX *ctx, SAM_USERINFO_CTR * ctr,
        case 21:
                {
                        SAM_USER_INFO_21 *cusr;
-                       cusr = (SAM_USER_INFO_21 *)talloc_zero(ctx,sizeof(SAM_USER_INFO_21));
+                       cusr = TALLOC_ZERO_P(ctx,SAM_USER_INFO_21);
                        ctr->info.id21 = cusr;
                        if (ctr->info.id21 == NULL)
                                return NT_STATUS_NO_MEMORY;
@@ -6377,7 +6355,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
        depth++;
 
        if (UNMARSHALLING(ps)) {
-               ctr = (SAM_USERINFO_CTR *)prs_alloc_mem(ps,sizeof(SAM_USERINFO_CTR));
+               ctr = PRS_ALLOC_MEM(ps,SAM_USERINFO_CTR,1);
                if (ctr == NULL)
                        return False;
                *ppctr = ctr;
@@ -6397,7 +6375,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
        switch (ctr->switch_value) {
        case 0x10:
                if (UNMARSHALLING(ps))
-                       ctr->info.id10 = (SAM_USER_INFO_10 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_10));
+                       ctr->info.id10 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_10,1);
                if (ctr->info.id10 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
                        return False;
@@ -6406,7 +6384,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 0x11:
                if (UNMARSHALLING(ps))
-                       ctr->info.id11 = (SAM_USER_INFO_11 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_11));
+                       ctr->info.id11 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_11,1);
 
                if (ctr->info.id11 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6416,7 +6394,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 0x12:
                if (UNMARSHALLING(ps))
-                       ctr->info.id12 = (SAM_USER_INFO_12 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_12));
+                       ctr->info.id12 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_12,1);
 
                if (ctr->info.id12 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6426,7 +6404,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 20:
                if (UNMARSHALLING(ps))
-                       ctr->info.id20 = (SAM_USER_INFO_20 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_20));
+                       ctr->info.id20 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_20,1);
 
                if (ctr->info.id20 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6436,7 +6414,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 21:
                if (UNMARSHALLING(ps))
-                       ctr->info.id21 = (SAM_USER_INFO_21 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_21));
+                       ctr->info.id21 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_21,1);
 
                if (ctr->info.id21 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6446,7 +6424,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 23:
                if (UNMARSHALLING(ps))
-                       ctr->info.id23 = (SAM_USER_INFO_23 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_23));
+                       ctr->info.id23 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_23,1);
 
                if (ctr->info.id23 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6456,7 +6434,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 24:
                if (UNMARSHALLING(ps))
-                       ctr->info.id24 = (SAM_USER_INFO_24 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_24));
+                       ctr->info.id24 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_24,1);
 
                if (ctr->info.id24 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -6466,7 +6444,7 @@ static BOOL samr_io_userinfo_ctr(const char *desc, SAM_USERINFO_CTR **ppctr,
                break;
        case 25:
                if (UNMARSHALLING(ps))
-                       ctr->info.id25 = (SAM_USER_INFO_25 *)prs_alloc_mem(ps,sizeof(SAM_USER_INFO_25));
+                       ctr->info.id25 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_25,1);
 
                if (ctr->info.id25 == NULL) {
                        DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
@@ -7356,7 +7334,7 @@ BOOL samr_io_q_set_domain_info(const char *desc, SAMR_Q_SET_DOMAIN_INFO *q_u,
        if(!prs_align(ps))
                return False;
 
-       if ((q_u->ctr = (SAM_UNK_CTR *)prs_alloc_mem(ps, sizeof(SAM_UNK_CTR))) == NULL)
+       if ((q_u->ctr = PRS_ALLOC_MEM(ps, SAM_UNK_CTR, 1)) == NULL)
                return False;
        
        switch (q_u->switch_value) {
index a78627650ada3c21faca56f927d0a0c18828a402..8656b8f5d84e69bd06e0160f516eb7ab1b5b2d74 100644 (file)
@@ -129,7 +129,7 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth)
                /*
                 * This is a read and we must allocate the stuct to read into.
                 */
-               if((psa = (SEC_ACL *)prs_alloc_mem(ps, sizeof(SEC_ACL))) == NULL)
+               if((psa = PRS_ALLOC_MEM(ps, SEC_ACL, 1)) == NULL)
                        return False;
                *ppsa = psa;
        }
@@ -154,7 +154,7 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth)
                 * between a non-present DACL (allow all access) and a DACL with no ACE's
                 * (allow no access).
                 */
-               if((psa->ace = (SEC_ACE *)prs_alloc_mem(ps,sizeof(psa->ace[0]) * (psa->num_aces+1))) == NULL)
+               if((psa->ace = PRS_ALLOC_MEM(ps, SEC_ACE, psa->num_aces+1)) == NULL)
                        return False;
        }
 
@@ -191,7 +191,7 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
 
        if (psd == NULL) {
                if(UNMARSHALLING(ps)) {
-                       if((psd = (SEC_DESC *)prs_alloc_mem(ps,sizeof(SEC_DESC))) == NULL)
+                       if((psd = PRS_ALLOC_MEM(ps,SEC_DESC,1)) == NULL)
                                return False;
                        *ppsd = psd;
                } else {
@@ -244,7 +244,7 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
 
                if (UNMARSHALLING(ps)) {
                        /* reading */
-                       if((psd->owner_sid = (DOM_SID *)prs_alloc_mem(ps,sizeof(*psd->owner_sid))) == NULL)
+                       if((psd->owner_sid = PRS_ALLOC_MEM(ps,DOM_SID,1)) == NULL)
                                return False;
                }
 
@@ -265,7 +265,7 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
 
                if (UNMARSHALLING(ps)) {
                        /* reading */
-                       if((psd->grp_sid = (DOM_SID *)prs_alloc_mem(ps,sizeof(*psd->grp_sid))) == NULL)
+                       if((psd->grp_sid = PRS_ALLOC_MEM(ps,DOM_SID,1)) == NULL)
                                return False;
                }
 
@@ -324,7 +324,7 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int
        psdb = *ppsdb;
 
        if (UNMARSHALLING(ps) && psdb == NULL) {
-               if((psdb = (SEC_DESC_BUF *)prs_alloc_mem(ps,sizeof(SEC_DESC_BUF))) == NULL)
+               if((psdb = PRS_ALLOC_MEM(ps,SEC_DESC_BUF,1)) == NULL)
                        return False;
                *ppsdb = psdb;
        }
index 6362dcf0f1d92675f59252db7c9a84ac2cec46f2..2e5244d65321f75a7fe9d0b1f10d6f2639f7ab01 100644 (file)
@@ -269,7 +269,7 @@ static BOOL smb_io_notify_option_type_ctr(const char *desc, SPOOL_NOTIFY_OPTION_
 
        /* reading */
        if (UNMARSHALLING(ps))
-               if((ctr->type=(SPOOL_NOTIFY_OPTION_TYPE *)prs_alloc_mem(ps,ctr->count*sizeof(SPOOL_NOTIFY_OPTION_TYPE))) == NULL)
+               if((ctr->type=PRS_ALLOC_MEM(ps,SPOOL_NOTIFY_OPTION_TYPE,ctr->count)) == NULL)
                        return False;
                
        /* the option type struct */
@@ -421,20 +421,20 @@ BOOL smb_io_notify_info_data_strings(const char *desc,SPOOL_NOTIFY_INFO_DATA *da
 
        case NOTIFY_STRING:
 
-               if (UNMARSHALLING(ps)) {
-                       data->notify_data.data.string = 
-                               (uint16 *)prs_alloc_mem(ps, data->notify_data.data.length);
-
-                       if (!data->notify_data.data.string) 
-                               return False;
-               }
-
                if (MARSHALLING(ps))
                        data->notify_data.data.length /= 2;
 
                if(!prs_uint32("string length", ps, depth, &data->notify_data.data.length))
                        return False;
 
+               if (UNMARSHALLING(ps)) {
+                       data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16,
+                                                               data->notify_data.data.length);
+
+                       if (!data->notify_data.data.string) 
+                               return False;
+               }
+
                if (!prs_uint16uni(True, "string", ps, depth, data->notify_data.data.string,
                                   data->notify_data.data.length))
                        return False;
@@ -447,8 +447,8 @@ BOOL smb_io_notify_info_data_strings(const char *desc,SPOOL_NOTIFY_INFO_DATA *da
        case NOTIFY_POINTER:
 
                if (UNMARSHALLING(ps)) {
-                       data->notify_data.data.string = 
-                               (uint16 *)prs_alloc_mem(ps, data->notify_data.data.length);
+                       data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16,
+                                                               data->notify_data.data.length);
 
                        if (!data->notify_data.data.string) 
                                return False;
@@ -506,7 +506,7 @@ BOOL smb_io_notify_info_data_strings(const char *desc,SPOOL_NOTIFY_INFO_DATA *da
 
                        /* Tallocate memory for string */
 
-                       data->notify_data.data.string = (uint16 *)prs_alloc_mem(ps, x * 2);
+                       data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16, x * 2);
                        if (!data->notify_data.data.string) 
                                return False;
 
@@ -679,7 +679,7 @@ BOOL spoolss_io_devmode(const char *desc, prs_struct *ps, int depth, DEVICEMODE
        depth++;
 
        if (UNMARSHALLING(ps)) {
-               devmode->devicename.buffer = (uint16 *)prs_alloc_mem(ps, 32 * sizeof(uint16) );
+               devmode->devicename.buffer = PRS_ALLOC_MEM(ps, uint16, 32);
                if (devmode->devicename.buffer == NULL)
                        return False;
        }
@@ -745,7 +745,7 @@ BOOL spoolss_io_devmode(const char *desc, prs_struct *ps, int depth, DEVICEMODE
                return False;
 
        if (UNMARSHALLING(ps)) {
-               devmode->formname.buffer = (uint16 *)prs_alloc_mem(ps, 32 * sizeof(uint16) );
+               devmode->formname.buffer = PRS_ALLOC_MEM(ps, uint16, 32);
                if (devmode->formname.buffer == NULL)
                        return False;
        }
@@ -810,7 +810,7 @@ BOOL spoolss_io_devmode(const char *desc, prs_struct *ps, int depth, DEVICEMODE
 
        if (devmode->driverextra!=0) {
                if (UNMARSHALLING(ps)) {
-                       devmode->private=(uint8 *)prs_alloc_mem(ps, devmode->driverextra*sizeof(uint8));
+                       devmode->private=PRS_ALLOC_MEM(ps, uint8, devmode->driverextra);
                        if(devmode->private == NULL)
                                return False;
                        DEBUG(7,("spoolss_io_devmode: allocated memory [%d] for private\n",devmode->driverextra)); 
@@ -856,7 +856,7 @@ static BOOL spoolss_io_devmode_cont(const char *desc, DEVMODE_CTR *dm_c, prs_str
        /* so we have a DEVICEMODE to follow */         
        if (UNMARSHALLING(ps)) {
                DEBUG(9,("Allocating memory for spoolss_io_devmode\n"));
-               dm_c->devmode=(DEVICEMODE *)prs_alloc_mem(ps,sizeof(DEVICEMODE));
+               dm_c->devmode=PRS_ALLOC_MEM(ps,DEVICEMODE,1);
                if(dm_c->devmode == NULL)
                        return False;
        }
@@ -1010,7 +1010,7 @@ BOOL make_spoolss_printer_info_2(TALLOC_CTX *mem_ctx, SPOOL_PRINTER_INFO_LEVEL_2
        SPOOL_PRINTER_INFO_LEVEL_2 *inf;
 
        /* allocate the necessary memory */
-       if (!(inf=(SPOOL_PRINTER_INFO_LEVEL_2*)talloc(mem_ctx, sizeof(SPOOL_PRINTER_INFO_LEVEL_2)))) {
+       if (!(inf=TALLOC_P(mem_ctx, SPOOL_PRINTER_INFO_LEVEL_2))) {
                DEBUG(0,("make_spoolss_printer_info_2: Unable to allocate SPOOL_PRINTER_INFO_LEVEL_2 sruct!\n"));
                return False;
        }
@@ -1064,7 +1064,7 @@ BOOL make_spoolss_printer_info_3(TALLOC_CTX *mem_ctx, SPOOL_PRINTER_INFO_LEVEL_3
        SPOOL_PRINTER_INFO_LEVEL_3 *inf;
 
        /* allocate the necessary memory */
-       if (!(inf=(SPOOL_PRINTER_INFO_LEVEL_3*)talloc(mem_ctx, sizeof(SPOOL_PRINTER_INFO_LEVEL_3)))) {
+       if (!(inf=TALLOC_P(mem_ctx, SPOOL_PRINTER_INFO_LEVEL_3))) {
                DEBUG(0,("make_spoolss_printer_info_3: Unable to allocate SPOOL_PRINTER_INFO_LEVEL_3 sruct!\n"));
                return False;
        }
@@ -1087,7 +1087,7 @@ BOOL make_spoolss_printer_info_7(TALLOC_CTX *mem_ctx, SPOOL_PRINTER_INFO_LEVEL_7
        SPOOL_PRINTER_INFO_LEVEL_7 *inf;
 
        /* allocate the necessary memory */
-       if (!(inf=(SPOOL_PRINTER_INFO_LEVEL_7*)talloc(mem_ctx, sizeof(SPOOL_PRINTER_INFO_LEVEL_7)))) {
+       if (!(inf=TALLOC_P(mem_ctx, SPOOL_PRINTER_INFO_LEVEL_7))) {
                DEBUG(0,("make_spoolss_printer_info_7: Unable to allocate SPOOL_PRINTER_INFO_LEVEL_7 struct!\n"));
                return False;
        }
@@ -1444,7 +1444,7 @@ BOOL spoolss_io_r_getprinterdata(const char *desc, SPOOL_R_GETPRINTERDATA *r_u,
                return False;
        
        if (UNMARSHALLING(ps) && r_u->size) {
-               r_u->data = (unsigned char *)prs_alloc_mem(ps, r_u->size);
+               r_u->data = PRS_ALLOC_MEM(ps, unsigned char, r_u->size);
                if(!r_u->data)
                        return False;
        }
@@ -1885,7 +1885,7 @@ BOOL spoolss_io_q_writeprinter(const char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_
        if (q_u->buffer_size!=0)
        {
                if (UNMARSHALLING(ps))
-                       q_u->buffer=(uint8 *)prs_alloc_mem(ps,q_u->buffer_size*sizeof(uint8));
+                       q_u->buffer=PRS_ALLOC_MEM(ps, uint8, q_u->buffer_size);
                if(q_u->buffer == NULL)
                        return False;   
                if(!prs_uint8s(True, "buffer", ps, depth, q_u->buffer, q_u->buffer_size))
@@ -1952,7 +1952,7 @@ BOOL spoolss_io_q_rffpcnex(const char *desc, SPOOL_Q_RFFPCNEX *q_u, prs_struct *
        if (q_u->option_ptr!=0) {
        
                if (UNMARSHALLING(ps))
-                       if((q_u->option=(SPOOL_NOTIFY_OPTION *)prs_alloc_mem(ps,sizeof(SPOOL_NOTIFY_OPTION))) == NULL)
+                       if((q_u->option=PRS_ALLOC_MEM(ps,SPOOL_NOTIFY_OPTION,1)) == NULL)
                                return False;
        
                if(!smb_io_notify_option("notify option", q_u->option, ps, depth))
@@ -2003,7 +2003,7 @@ BOOL spoolss_io_q_rfnpcnex(const char *desc, SPOOL_Q_RFNPCNEX *q_u, prs_struct *
        if (q_u->option_ptr!=0) {
        
                if (UNMARSHALLING(ps))
-                       if((q_u->option=(SPOOL_NOTIFY_OPTION *)prs_alloc_mem(ps,sizeof(SPOOL_NOTIFY_OPTION))) == NULL)
+                       if((q_u->option=PRS_ALLOC_MEM(ps,SPOOL_NOTIFY_OPTION,1)) == NULL)
                                return False;
        
                if(!smb_io_notify_option("notify option", q_u->option, ps, depth))
@@ -2229,7 +2229,7 @@ static BOOL smb_io_relarraystr(const char *desc, NEW_BUFFER *buffer, int depth,
 
                        /* Yes this should be malloc not talloc. Don't change. */
 
-                       chaine.buffer = malloc((q-p+1)*sizeof(uint16));
+                       chaine.buffer = SMB_MALLOC((q-p+1)*sizeof(uint16));
                        if (chaine.buffer == NULL)
                                return False;
 
@@ -2298,7 +2298,7 @@ static BOOL smb_io_relarraystr(const char *desc, NEW_BUFFER *buffer, int depth,
 
                                /* Yes this should be realloc - it's freed below. JRA */
 
-                               if((tc2=(uint16 *)Realloc(chaine2, realloc_size)) == NULL) {
+                               if((tc2=(uint16 *)SMB_REALLOC(chaine2, realloc_size)) == NULL) {
                                        SAFE_FREE(chaine2);
                                        return False;
                                }
@@ -2314,7 +2314,7 @@ static BOOL smb_io_relarraystr(const char *desc, NEW_BUFFER *buffer, int depth,
                if (chaine2)
                {
                        chaine2[l_chaine2] = '\0';
-                       *string=(uint16 *)talloc_memdup(prs_get_mem_context(ps),chaine2,realloc_size);
+                       *string=(uint16 *)TALLOC_MEMDUP(prs_get_mem_context(ps),chaine2,realloc_size);
                        SAFE_FREE(chaine2);
                }
 
@@ -2442,7 +2442,7 @@ static BOOL smb_io_reldevmode(const char *desc, NEW_BUFFER *buffer, int depth, D
                        return False;
 
                /* read the string */
-               if((*devmode=(DEVICEMODE *)prs_alloc_mem(ps,sizeof(DEVICEMODE))) == NULL)
+               if((*devmode=PRS_ALLOC_MEM(ps,DEVICEMODE,1)) == NULL)
                        return False;
                if (!spoolss_io_devmode(desc, ps, depth, *devmode))
                        return False;
@@ -3114,7 +3114,7 @@ static BOOL spoolss_io_buffer(const char *desc, prs_struct *ps, int depth, NEW_B
        depth++;
        
        if (UNMARSHALLING(ps))
-               buffer = *pp_buffer = (NEW_BUFFER *)prs_alloc_mem(ps, sizeof(NEW_BUFFER));
+               buffer = *pp_buffer = PRS_ALLOC_MEM(ps, NEW_BUFFER, 1);
 
        if (buffer == NULL)
                return False;
@@ -4172,7 +4172,7 @@ BOOL make_spoolss_q_setprinter(TALLOC_CTX *mem_ctx, SPOOL_Q_SETPRINTER *q_u,
                
                make_spoolss_printer_info_2 (mem_ctx, &q_u->info.info_2, info->printers_2);
 #if 1  /* JERRY TEST */
-               q_u->secdesc_ctr = (SEC_DESC_BUF*)malloc(sizeof(SEC_DESC_BUF));
+               q_u->secdesc_ctr = SMB_MALLOC_P(SEC_DESC_BUF);
                if (!q_u->secdesc_ctr)
                        return False;
                q_u->secdesc_ctr->ptr = (secdesc != NULL) ? 1: 0;
@@ -4196,7 +4196,7 @@ BOOL make_spoolss_q_setprinter(TALLOC_CTX *mem_ctx, SPOOL_Q_SETPRINTER *q_u,
                
                make_spoolss_printer_info_3 (mem_ctx, &q_u->info.info_3, info->printers_3);
                
-               q_u->secdesc_ctr = (SEC_DESC_BUF*)malloc(sizeof(SEC_DESC_BUF));
+               q_u->secdesc_ctr = SMB_MALLOC_P(SEC_DESC_BUF);
                if (!q_u->secdesc_ctr)
                        return False;
                q_u->secdesc_ctr->ptr = (secdesc != NULL) ? 1: 0;
@@ -5011,7 +5011,7 @@ BOOL spool_io_printer_info_level(const char *desc, SPOOL_PRINTER_INFO_LEVEL *il,
                case 1:
                {
                        if (UNMARSHALLING(ps)) {
-                               if ((il->info_1=(SPOOL_PRINTER_INFO_LEVEL_1 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_INFO_LEVEL_1))) == NULL)
+                               if ((il->info_1=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_INFO_LEVEL_1,1)) == NULL)
                                        return False;
                        }
                        if (!spool_io_printer_info_level_1("", il->info_1, ps, depth))
@@ -5024,7 +5024,7 @@ BOOL spool_io_printer_info_level(const char *desc, SPOOL_PRINTER_INFO_LEVEL *il,
                 */     
                case 2:
                        if (UNMARSHALLING(ps)) {
-                               if ((il->info_2=(SPOOL_PRINTER_INFO_LEVEL_2 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_INFO_LEVEL_2))) == NULL)
+                               if ((il->info_2=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_INFO_LEVEL_2,1)) == NULL)
                                        return False;
                        }
                        if (!spool_io_printer_info_level_2("", il->info_2, ps, depth))
@@ -5034,7 +5034,7 @@ BOOL spool_io_printer_info_level(const char *desc, SPOOL_PRINTER_INFO_LEVEL *il,
                case 3:
                {
                        if (UNMARSHALLING(ps)) {
-                               if ((il->info_3=(SPOOL_PRINTER_INFO_LEVEL_3 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_INFO_LEVEL_3))) == NULL)
+                               if ((il->info_3=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_INFO_LEVEL_3,1)) == NULL)
                                        return False;
                        }
                        if (!spool_io_printer_info_level_3("", il->info_3, ps, depth))
@@ -5043,7 +5043,7 @@ BOOL spool_io_printer_info_level(const char *desc, SPOOL_PRINTER_INFO_LEVEL *il,
                }
                case 7:
                        if (UNMARSHALLING(ps))
-                               if ((il->info_7=(SPOOL_PRINTER_INFO_LEVEL_7 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_INFO_LEVEL_7))) == NULL)
+                               if ((il->info_7=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_INFO_LEVEL_7,1)) == NULL)
                                        return False;
                        if (!spool_io_printer_info_level_7("", il->info_7, ps, depth))
                                return False;
@@ -5148,7 +5148,7 @@ BOOL spool_io_printer_driver_info_level_3(const char *desc, SPOOL_PRINTER_DRIVER
                
        /* reading */
        if (UNMARSHALLING(ps)) {
-               il=(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3));
+               il=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_DRIVER_INFO_LEVEL_3,1);
                if(il == NULL)
                        return False;
                *q_u=il;
@@ -5226,7 +5226,7 @@ BOOL spool_io_printer_driver_info_level_6(const char *desc, SPOOL_PRINTER_DRIVER
                
        /* reading */
        if (UNMARSHALLING(ps)) {
-               il=(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6));
+               il=PRS_ALLOC_MEM(ps,SPOOL_PRINTER_DRIVER_INFO_LEVEL_6,1);
                if(il == NULL)
                        return False;
                *q_u=il;
@@ -5385,7 +5385,7 @@ static BOOL uniarray_2_dosarray(BUFFER5 *buf5, fstring **ar)
        while (src < ((char *)buf5->buffer) + buf5->buf_len*2) {
                rpcstr_pull(f, src, sizeof(f)-1, -1, STR_TERMINATE);
                src = skip_unibuf(src, 2*buf5->buf_len - PTR_DIFF(src,buf5->buffer));
-               tar = (fstring *)Realloc(*ar, sizeof(fstring)*(n+2));
+               tar = SMB_REALLOC_ARRAY(*ar, fstring, n+2);
                if (!tar)
                        return False;
                else
@@ -5499,7 +5499,7 @@ BOOL make_spoolss_driver_info_3(TALLOC_CTX *mem_ctx,
        BOOL            null_char = False;
        SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *inf;
 
-       if (!(inf=(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3*)talloc_zero(mem_ctx, sizeof(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3))))
+       if (!(inf=TALLOC_ZERO_P(mem_ctx, SPOOL_PRINTER_DRIVER_INFO_LEVEL_3)))
                return False;
        
        inf->cversion   = info3->version;
@@ -5562,8 +5562,7 @@ BOOL make_spoolss_buffer5(TALLOC_CTX *mem_ctx, BUFFER5 *buf5, uint32 len, uint16
 {
 
        buf5->buf_len = len;
-       if((buf5->buffer=(uint16*)talloc_memdup(mem_ctx, src, sizeof(uint16)*len)) == NULL)
-       {
+       if((buf5->buffer=(uint16*)TALLOC_MEMDUP(mem_ctx, src, sizeof(uint16)*len)) == NULL) {
                DEBUG(0,("make_spoolss_buffer5: Unable to malloc memory for buffer!\n"));
                return False;
        }
@@ -5672,7 +5671,7 @@ BOOL uni_2_asc_printer_driver_3(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *uni,
        
        if (*asc==NULL)
        {
-               *asc=(NT_PRINTER_DRIVER_INFO_LEVEL_3 *)malloc(sizeof(NT_PRINTER_DRIVER_INFO_LEVEL_3));
+               *asc=SMB_MALLOC_P(NT_PRINTER_DRIVER_INFO_LEVEL_3);
                if(*asc == NULL)
                        return False;
                ZERO_STRUCTP(*asc);
@@ -5719,7 +5718,7 @@ BOOL uni_2_asc_printer_driver_6(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *uni,
        
        if (*asc==NULL)
        {
-               *asc=(NT_PRINTER_DRIVER_INFO_LEVEL_6 *)malloc(sizeof(NT_PRINTER_DRIVER_INFO_LEVEL_6));
+               *asc=SMB_MALLOC_P(NT_PRINTER_DRIVER_INFO_LEVEL_6);
                if(*asc == NULL)
                        return False;
                ZERO_STRUCTP(*asc);
@@ -5772,7 +5771,7 @@ BOOL uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
        if (*asc==NULL) {
                DEBUGADD(8,("allocating memory\n"));
 
-               *asc=(NT_PRINTER_INFO_LEVEL_2 *)malloc(sizeof(NT_PRINTER_INFO_LEVEL_2));
+               *asc=SMB_MALLOC_P(NT_PRINTER_INFO_LEVEL_2);
                if(*asc == NULL)
                        return False;
                ZERO_STRUCTP(*asc);
@@ -6168,7 +6167,7 @@ BOOL spoolss_io_r_enumprinterdata(const char *desc, SPOOL_R_ENUMPRINTERDATA *r_u
                return False;
 
        if (UNMARSHALLING(ps) && r_u->valuesize) {
-               r_u->value = (uint16 *)prs_alloc_mem(ps, r_u->valuesize * 2);
+               r_u->value = PRS_ALLOC_MEM(ps, uint16, r_u->valuesize);
                if (!r_u->value) {
                        DEBUG(0, ("spoolss_io_r_enumprinterdata: out of memory for printerdata value\n"));
                        return False;
@@ -6191,7 +6190,7 @@ BOOL spoolss_io_r_enumprinterdata(const char *desc, SPOOL_R_ENUMPRINTERDATA *r_u
                return False;
 
        if (UNMARSHALLING(ps) && r_u->datasize) {
-               r_u->data = (uint8 *)prs_alloc_mem(ps, r_u->datasize);
+               r_u->data = PRS_ALLOC_MEM(ps, uint8, r_u->datasize);
                if (!r_u->data) {
                        DEBUG(0, ("spoolss_io_r_enumprinterdata: out of memory for printerdata data\n"));
                        return False;
@@ -6326,7 +6325,7 @@ BOOL spoolss_io_q_setprinterdata(const char *desc, SPOOL_Q_SETPRINTERDATA *q_u,
                case REG_MULTI_SZ:
             if (q_u->max_len) {
                 if (UNMARSHALLING(ps))
-                               q_u->data=(uint8 *)prs_alloc_mem(ps, q_u->max_len * sizeof(uint8));
+                               q_u->data=PRS_ALLOC_MEM(ps, uint8, q_u->max_len);
                        if(q_u->data == NULL)
                                return False;
                        if(!prs_uint8s(False,"data", ps, depth, q_u->data, q_u->max_len))
@@ -6885,7 +6884,7 @@ static BOOL copy_spool_notify_info_data(SPOOL_NOTIFY_INFO_DATA *dst,
                if (src->size != POINTER) 
                        continue;
                len = src->notify_data.data.length;
-               s = malloc(sizeof(uint16)*len);
+               s = SMB_MALLOC_ARRAY(uint16, len);
                if (s == NULL) {
                        DEBUG(0,("copy_spool_notify_info_data: malloc() failed!\n"));
                        return False;
@@ -6914,7 +6913,7 @@ static BOOL copy_spool_notify_info(SPOOL_NOTIFY_INFO *dst, SPOOL_NOTIFY_INFO *sr
        
        if (dst->count) 
        {
-               dst->data = malloc(dst->count * sizeof(SPOOL_NOTIFY_INFO_DATA));
+               dst->data = SMB_MALLOC_ARRAY(SPOOL_NOTIFY_INFO_DATA, dst->count);
                
                DEBUG(10,("copy_spool_notify_info: allocating space for [%d] PRINTER_NOTIFY_INFO_DATA entries\n",
                        dst->count));
@@ -7084,7 +7083,7 @@ BOOL spoolss_io_r_getprinterdataex(const char *desc, SPOOL_R_GETPRINTERDATAEX *r
                return False;
        
        if (UNMARSHALLING(ps) && r_u->size) {
-               r_u->data = (unsigned char *)prs_alloc_mem(ps, r_u->size);
+               r_u->data = PRS_ALLOC_MEM(ps, unsigned char, r_u->size);
                if(!r_u->data)
                        return False;
        }
@@ -7142,7 +7141,7 @@ BOOL spoolss_io_q_setprinterdataex(const char *desc, SPOOL_Q_SETPRINTERDATAEX *q
                case 0x7:
                        if (q_u->max_len) {
                                if (UNMARSHALLING(ps))
-                                       q_u->data=(uint8 *)prs_alloc_mem(ps, q_u->max_len * sizeof(uint8));
+                                       q_u->data=PRS_ALLOC_MEM(ps, uint8, q_u->max_len);
                                if(q_u->data == NULL)
                                        return False;
                                if(!prs_uint8s(False,"data", ps, depth, q_u->data, q_u->max_len))
@@ -7350,8 +7349,7 @@ static BOOL spoolss_io_printer_enum_values_ctr(const char *desc, prs_struct *ps,
        /* first loop to write basic enum_value information */
        
        if (UNMARSHALLING(ps)) {
-               ctr->values = (PRINTER_ENUM_VALUES *)prs_alloc_mem(
-                       ps, ctr->size_of_array * sizeof(PRINTER_ENUM_VALUES));
+               ctr->values = PRS_ALLOC_MEM(ps, PRINTER_ENUM_VALUES, ctr->size_of_array);
                if (!ctr->values)
                        return False;
        }
@@ -7392,8 +7390,7 @@ static BOOL spoolss_io_printer_enum_values_ctr(const char *desc, prs_struct *ps,
                
                if ( ctr->values[i].data_len ) {
                        if ( UNMARSHALLING(ps) ) {
-                               ctr->values[i].data = (uint8 *)prs_alloc_mem(
-                                       ps, ctr->values[i].data_len);
+                               ctr->values[i].data = PRS_ALLOC_MEM(ps, uint8, ctr->values[i].data_len);
                                if (!ctr->values[i].data)
                                        return False;
                        }
index 8313c82c93dcc49c1495c4704e03177e5b620a29..84c45b59014a67fde2a560ca90a72fdf347bbccc 100644 (file)
@@ -783,7 +783,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info0 = (SRV_SHARE_INFO_0 *)prs_alloc_mem(ps, num_entries * sizeof(SRV_SHARE_INFO_0))))
+                       if (!(info0 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_0, num_entries)))
                                return False;
                        ctr->share.info0 = info0;
                }
@@ -809,7 +809,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1 = (SRV_SHARE_INFO_1 *)prs_alloc_mem(ps, num_entries * sizeof(SRV_SHARE_INFO_1))))
+                       if (!(info1 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_1, num_entries)))
                                return False;
                        ctr->share.info1 = info1;
                }
@@ -835,7 +835,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info2 = (SRV_SHARE_INFO_2 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_2))))
+                       if (!(info2 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_2,num_entries)))
                                return False;
                        ctr->share.info2 = info2;
                }
@@ -860,8 +860,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info501 = (SRV_SHARE_INFO_501 *) prs_alloc_mem(ps, num_entries *
-                                       sizeof (SRV_SHARE_INFO_501))))
+                       if (!(info501 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_501, num_entries)))
                                return False;
                        ctr->share.info501 = info501;
                }
@@ -886,7 +885,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info502 = (SRV_SHARE_INFO_502 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_502))))
+                       if (!(info502 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_502,num_entries)))
                                return False;
                        ctr->share.info502 = info502;
                }
@@ -912,7 +911,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1004 = (SRV_SHARE_INFO_1004 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_1004))))
+                       if (!(info1004 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1004,num_entries)))
                                return False;
                        ctr->share.info1004 = info1004;
                }
@@ -938,7 +937,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1005 = (SRV_SHARE_INFO_1005 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_1005))))
+                       if (!(info1005 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1005,num_entries)))
                                return False;
                        ctr->share.info1005 = info1005;
                }
@@ -958,7 +957,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1006 = (SRV_SHARE_INFO_1006 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_1006))))
+                       if (!(info1006 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1006,num_entries)))
                                return False;
                        ctr->share.info1006 = info1006;
                }
@@ -978,7 +977,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1007 = (SRV_SHARE_INFO_1007 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_1007))))
+                       if (!(info1007 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1007,num_entries)))
                                return False;
                        ctr->share.info1007 = info1007;
                }
@@ -1004,7 +1003,7 @@ static BOOL srv_io_srv_share_ctr(const char *desc, SRV_SHARE_INFO_CTR *ctr, prs_
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info1501 = (SRV_SHARE_INFO_1501 *)prs_alloc_mem(ps,num_entries * sizeof(SRV_SHARE_INFO_1501))))
+                       if (!(info1501 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1501,num_entries)))
                                return False;
                        ctr->share.info1501 = info1501;
                }
@@ -1848,7 +1847,7 @@ static BOOL srv_io_srv_sess_ctr(const char *desc, SRV_SESS_INFO_CTR **pp_ctr, pr
        depth++;
 
        if(UNMARSHALLING(ps)) {
-               ctr = *pp_ctr = (SRV_SESS_INFO_CTR *)prs_alloc_mem(ps, sizeof(SRV_SESS_INFO_CTR));
+               ctr = *pp_ctr = PRS_ALLOC_MEM(ps, SRV_SESS_INFO_CTR, 1);
                if (ctr == NULL)
                        return False;
        }
@@ -2221,7 +2220,7 @@ static BOOL srv_io_srv_conn_ctr(const char *desc, SRV_CONN_INFO_CTR **pp_ctr, pr
        depth++;
 
        if (UNMARSHALLING(ps)) {
-               ctr = *pp_ctr = (SRV_CONN_INFO_CTR *)prs_alloc_mem(ps, sizeof(SRV_CONN_INFO_CTR));
+               ctr = *pp_ctr = PRS_ALLOC_MEM(ps, SRV_CONN_INFO_CTR, 1);
                if (ctr == NULL)
                        return False;
        }
@@ -2487,7 +2486,7 @@ static BOOL srv_io_srv_file_ctr(const char *desc, SRV_FILE_INFO_CTR *ctr, prs_st
                int i;
 
                if (UNMARSHALLING(ps)) {
-                       if (!(info3 = (SRV_FILE_INFO_3 *)prs_alloc_mem(ps, num_entries * sizeof(SRV_FILE_INFO_3))))
+                       if (!(info3 = PRS_ALLOC_MEM(ps, SRV_FILE_INFO_3, num_entries)))
                                return False;
                        ctr->file.info3 = info3;
                }
@@ -3022,8 +3021,7 @@ BOOL srv_io_q_net_srv_set_info(const char *desc, SRV_Q_NET_SRV_SET_INFO *q_n,
                return False;
 
        if (UNMARSHALLING(ps)) {
-               q_n->ctr = (SRV_INFO_CTR *)
-                       prs_alloc_mem(ps, sizeof(SRV_INFO_CTR));
+               q_n->ctr = PRS_ALLOC_MEM(ps, SRV_INFO_CTR, 1);
 
                if (!q_n->ctr)
                        return False;
@@ -3310,8 +3308,8 @@ BOOL srv_io_r_net_disk_enum(const char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_stru
 
                DISK_INFO *dinfo;
 
-               if(!(dinfo = (DISK_INFO *)prs_alloc_mem(ps, sizeof(*dinfo) * entries_read3)))
-               return False;
+               if(!(dinfo = PRS_ALLOC_MEM(ps, DISK_INFO, entries_read3)))
+                       return False;
                r_n->disk_enum_ctr.disk_info = dinfo;
        }
 
index a3b06bb6e10275f48918573750658f45d1ace6cc..7334eef85be5499e5138d639bb75b86117d9cb78 100644 (file)
@@ -81,9 +81,7 @@ WERROR _dfs_add(pipes_struct *p, DFS_Q_DFS_ADD* q_u, DFS_R_DFS_ADD *r_u)
 
        vfs_ChDir(p->conn,p->conn->connectpath);
 
-       jn.referral_list = (struct referral*) talloc(p->mem_ctx, jn.referral_count 
-                               * sizeof(struct referral));
-
+       jn.referral_list = TALLOC_ARRAY(p->mem_ctx, struct referral, jn.referral_count);
        if(jn.referral_list == NULL) {
                DEBUG(0,("init_reply_dfs_add: talloc failed for referral list!\n"));
                return WERR_DFS_INTERNAL_ERROR;
@@ -245,8 +243,7 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, DFS_I
                dfs3[i].ptr_storages = 1;
      
                /* also enumerate the storages */
-               dfs3[i].storages = (DFS_STORAGE_INFO*) talloc(ctx, j[i].referral_count * 
-                                               sizeof(DFS_STORAGE_INFO));
+               dfs3[i].storages = TALLOC_ARRAY(ctx, DFS_STORAGE_INFO, j[i].referral_count);
                if (!dfs3[i].storages)
                        return False;
 
@@ -285,7 +282,7 @@ static WERROR init_reply_dfs_ctr(TALLOC_CTX *ctx, uint32 level,
        case 1:
                {
                DFS_INFO_1* dfs1;
-               dfs1 = (DFS_INFO_1*) talloc(ctx, num_jn * sizeof(DFS_INFO_1));
+               dfs1 = TALLOC_ARRAY(ctx, DFS_INFO_1, num_jn);
                if (!dfs1)
                        return WERR_NOMEM;
                init_reply_dfs_info_1(jn, dfs1, num_jn);
@@ -295,7 +292,7 @@ static WERROR init_reply_dfs_ctr(TALLOC_CTX *ctx, uint32 level,
        case 2:
                {
                DFS_INFO_2* dfs2;
-               dfs2 = (DFS_INFO_2*) talloc(ctx, num_jn * sizeof(DFS_INFO_2));
+               dfs2 = TALLOC_ARRAY(ctx, DFS_INFO_2, num_jn);
                if (!dfs2)
                        return WERR_NOMEM;
                init_reply_dfs_info_2(jn, dfs2, num_jn);
@@ -305,7 +302,7 @@ static WERROR init_reply_dfs_ctr(TALLOC_CTX *ctx, uint32 level,
        case 3:
                {
                DFS_INFO_3* dfs3;
-               dfs3 = (DFS_INFO_3*) talloc(ctx, num_jn * sizeof(DFS_INFO_3));
+               dfs3 = TALLOC_ARRAY(ctx, DFS_INFO_3, num_jn);
                if (!dfs3)
                        return WERR_NOMEM;
                init_reply_dfs_info_3(ctx, jn, dfs3, num_jn);
@@ -336,7 +333,7 @@ WERROR _dfs_enum(pipes_struct *p, DFS_Q_DFS_ENUM *q_u, DFS_R_DFS_ENUM *r_u)
        r_u->reshnd.ptr_hnd = 1;
        r_u->reshnd.handle = num_jn;
   
-       r_u->ctr = (DFS_INFO_CTR*)talloc(p->mem_ctx, sizeof(DFS_INFO_CTR));
+       r_u->ctr = TALLOC_P(p->mem_ctx, DFS_INFO_CTR);
        if (!r_u->ctr)
                return WERR_NOMEM;
        ZERO_STRUCTP(r_u->ctr);
index ddb76b3a21ee11ad875b9335fa930318c27011fa..86fcce28c71ddd12ea2e0eecc4cf14c7a8b4cca7 100644 (file)
@@ -44,7 +44,7 @@ void _echo_data(pipes_struct *p, ECHO_Q_ECHO_DATA *q_u,
 {
        DEBUG(10, ("_echo_data\n"));
 
-       r_u->data = talloc(p->mem_ctx, q_u->size);
+       r_u->data = TALLOC(p->mem_ctx, q_u->size);
        r_u->size = q_u->size;
        memcpy(r_u->data, q_u->data, q_u->size);
 }
@@ -68,7 +68,7 @@ void _source_data(pipes_struct *p, ECHO_Q_SOURCE_DATA *q_u,
 
        DEBUG(10, ("_source_data\n"));
 
-       r_u->data = talloc(p->mem_ctx, q_u->size);
+       r_u->data = TALLOC(p->mem_ctx, q_u->size);
        r_u->size = q_u->size;
 
        for (i = 0; i < r_u->size; i++)
index f6e8eed9a97e48d5c078f94d3f0e04c7fffd465e..d0b7a299be36391629e3ee12af4840c0a7c09da0 100644 (file)
@@ -41,7 +41,7 @@ static NTSTATUS fill_dsrole_dominfo_basic(TALLOC_CTX *ctx, DSROLE_PRIMARY_DOMAIN
 
        DEBUG(10,("fill_dsrole_dominfo_basic: enter\n"));
 
-       if ( !(basic = talloc_zero(ctx, sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC))) ) {
+       if ( !(basic = TALLOC_ZERO_P(ctx, DSROLE_PRIMARY_DOMAIN_INFO_BASIC)) ) {
                DEBUG(0,("fill_dsrole_dominfo_basic: FATAL error!  talloc_xero() failed\n"));
                return NT_STATUS_NO_MEMORY;
        }
index 2ec62e2c57ac46a1a61a5c21a48fdef882dbac30..0f9f239a029e36624edef14f8e4ba8fd6c19687d 100644 (file)
@@ -70,7 +70,7 @@ BOOL init_pipe_handle_list(pipes_struct *p, char *pipe_name)
                 * Create list.
                 */
 
-               if ((hl = (struct handle_list *)malloc(sizeof(struct handle_list))) == NULL)
+               if ((hl = SMB_MALLOC_P(struct handle_list)) == NULL)
                        return False;
                ZERO_STRUCTP(hl);
 
@@ -112,7 +112,7 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
                return False;
        }
 
-       pol = (struct policy *)malloc(sizeof(*p));
+       pol = SMB_MALLOC_P(struct policy);
        if (!pol) {
                DEBUG(0,("create_policy_hnd: ERROR: out of memory!\n"));
                return False;
index 498b83a4c9439693b81674ce0c2b0422418c6862..fcd574971f75c22fc42398fdb4bf223e8231a03a 100644 (file)
@@ -232,14 +232,12 @@ static void init_lsa_trans_names(TALLOC_CTX *ctx, DOM_R_REF *ref, LSA_TRANS_NAME
        /* Allocate memory for list of names */
 
        if (num_entries > 0) {
-               if (!(trn->name = (LSA_TRANS_NAME *)talloc(ctx, sizeof(LSA_TRANS_NAME) *
-                                                         num_entries))) {
+               if (!(trn->name = TALLOC_ARRAY(ctx, LSA_TRANS_NAME, num_entries))) {
                        DEBUG(0, ("init_lsa_trans_names(): out of memory\n"));
                        return;
                }
 
-               if (!(trn->uni_name = (UNISTR2 *)talloc(ctx, sizeof(UNISTR2) * 
-                                                       num_entries))) {
+               if (!(trn->uni_name = TALLOC_ARRAY(ctx, UNISTR2, num_entries))) {
                        DEBUG(0, ("init_lsa_trans_names(): out of memory\n"));
                        return;
                }
@@ -418,7 +416,7 @@ NTSTATUS _lsa_open_policy2(pipes_struct *p, LSA_Q_OPEN_POL2 *q_u, LSA_R_OPEN_POL
 
 
        /* associate the domain SID with the (unique) handle. */
-       if ((info = (struct lsa_info *)malloc(sizeof(struct lsa_info))) == NULL)
+       if ((info = SMB_MALLOC_P(struct lsa_info)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(info);
@@ -463,7 +461,7 @@ NTSTATUS _lsa_open_policy(pipes_struct *p, LSA_Q_OPEN_POL *q_u, LSA_R_OPEN_POL *
        }
 
        /* associate the domain SID with the (unique) handle. */
-       if ((info = (struct lsa_info *)malloc(sizeof(struct lsa_info))) == NULL)
+       if ((info = SMB_MALLOC_P(struct lsa_info)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(info);
@@ -550,7 +548,7 @@ NTSTATUS _lsa_query_info(pipes_struct *p, LSA_Q_QUERY_INFO *q_u, LSA_R_QUERY_INF
                info->id2.auditing_enabled = 1;
                info->id2.count1 = 7;
                info->id2.count2 = 7;
-               if ((info->id2.auditsettings = (uint32 *)talloc(p->mem_ctx,7*sizeof(uint32))) == NULL)
+               if ((info->id2.auditsettings = TALLOC_ARRAY(p->mem_ctx,uint32, 7)) == NULL)
                        return NT_STATUS_NO_MEMORY;
                for (i = 0; i < 7; i++)
                        info->id2.auditsettings[i] = 3;
@@ -649,8 +647,8 @@ NTSTATUS _lsa_lookup_sids(pipes_struct *p, LSA_Q_LOOKUP_SIDS *q_u, LSA_R_LOOKUP_
                DEBUG(5,("_lsa_lookup_sids: truncating SID lookup list to %d\n", num_entries));
        }
 
-       ref = (DOM_R_REF *)talloc_zero(p->mem_ctx, sizeof(DOM_R_REF));
-       names = (LSA_TRANS_NAME_ENUM *)talloc_zero(p->mem_ctx, sizeof(LSA_TRANS_NAME_ENUM));
+       ref = TALLOC_ZERO_P(p->mem_ctx, DOM_R_REF);
+       names = TALLOC_ZERO_P(p->mem_ctx, LSA_TRANS_NAME_ENUM);
 
        if (!find_policy_by_hnd(p, &q_u->pol, (void **)&handle)) {
                r_u->status = NT_STATUS_INVALID_HANDLE;
@@ -698,8 +696,8 @@ NTSTATUS _lsa_lookup_names(pipes_struct *p,LSA_Q_LOOKUP_NAMES *q_u, LSA_R_LOOKUP
                DEBUG(5,("_lsa_lookup_names: truncating name lookup list to %d\n", num_entries));
        }
                
-       ref = (DOM_R_REF *)talloc_zero(p->mem_ctx, sizeof(DOM_R_REF));
-       rids = (DOM_RID2 *)talloc_zero(p->mem_ctx, sizeof(DOM_RID2)*num_entries);
+       ref = TALLOC_ZERO_P(p->mem_ctx, DOM_R_REF);
+       rids = TALLOC_ZERO_ARRAY(p->mem_ctx, DOM_RID2, num_entries);
 
        if (!find_policy_by_hnd(p, &q_u->pol, (void **)&handle)) {
                r_u->status = NT_STATUS_INVALID_HANDLE;
@@ -768,7 +766,7 @@ NTSTATUS _lsa_enum_privs(pipes_struct *p, LSA_Q_ENUM_PRIVS *q_u, LSA_R_ENUM_PRIV
        if (enum_context >= PRIV_ALL_INDEX)
                return NT_STATUS_NO_MORE_ENTRIES;
 
-       entries = (LSA_PRIV_ENTRY *)talloc_zero(p->mem_ctx, sizeof(LSA_PRIV_ENTRY) * (PRIV_ALL_INDEX));
+       entries = TALLOC_ZERO_ARRAY(p->mem_ctx, LSA_PRIV_ENTRY, PRIV_ALL_INDEX);
        if (entries==NULL)
                return NT_STATUS_NO_MEMORY;
 
@@ -887,8 +885,8 @@ NTSTATUS _lsa_enum_accounts(pipes_struct *p, LSA_Q_ENUM_ACCOUNTS *q_u, LSA_R_ENU
        if (q_u->enum_context >= num_entries)
                return NT_STATUS_NO_MORE_ENTRIES;
 
-       sids->ptr_sid = (uint32 *)talloc_zero(p->mem_ctx, (num_entries-q_u->enum_context)*sizeof(uint32));
-       sids->sid = (DOM_SID2 *)talloc_zero(p->mem_ctx, (num_entries-q_u->enum_context)*sizeof(DOM_SID2));
+       sids->ptr_sid = TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num_entries-q_u->enum_context);
+       sids->sid = TALLOC_ZERO_ARRAY(p->mem_ctx, DOM_SID2, num_entries-q_u->enum_context);
 
        if (sids->ptr_sid==NULL || sids->sid==NULL) {
                SAFE_FREE(map);
@@ -960,7 +958,7 @@ NTSTATUS _lsa_open_account(pipes_struct *p, LSA_Q_OPENACCOUNT *q_u, LSA_R_OPENAC
                return NT_STATUS_ACCESS_DENIED;
 
        /* associate the user/group SID with the (unique) handle. */
-       if ((info = (struct lsa_info *)malloc(sizeof(struct lsa_info))) == NULL)
+       if ((info = SMB_MALLOC_P(struct lsa_info)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(info);
index a3157435f375dd863c51460b0ef95f183785e797..2bc0cf301e56c419a28d646f7eb4661e9840186a 100644 (file)
@@ -579,7 +579,7 @@ NTSTATUS _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON *
        SAM_ACCOUNT *sampw;
        struct auth_context *auth_context = NULL;
                
-       usr_info = (NET_USER_INFO_3 *)talloc(p->mem_ctx, sizeof(NET_USER_INFO_3));
+       usr_info = TALLOC_P(p->mem_ctx, NET_USER_INFO_3);
        if (!usr_info)
                return NT_STATUS_NO_MEMORY;
 
index bcf5eb533fd743afd567484386d451e57ab84c0d..01e91ce6c50e950c4a0ec15182c47de2de91d2c5 100644 (file)
@@ -775,7 +775,7 @@ BOOL check_bind_req(struct pipes_struct *p, RPC_IFACE* abstract,
                        int                     n_fns = 0;
                        PIPE_RPC_FNS            *context_fns;
                        
-                       if ( !(context_fns = malloc(sizeof(PIPE_RPC_FNS))) ) {
+                       if ( !(context_fns = SMB_MALLOC_P(PIPE_RPC_FNS)) ) {
                                DEBUG(0,("check_bind_req: malloc() failed!\n"));
                                return False;
                        }
@@ -831,8 +831,8 @@ NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *s
         /* We use a temporary variable because this call can fail and 
            rpc_lookup will still be valid afterwards.  It could then succeed if
            called again later */
-        rpc_entry = realloc(rpc_lookup, 
-                            ++rpc_lookup_size*sizeof(struct rpc_table));
+       rpc_lookup_size++;
+        rpc_entry = SMB_REALLOC_ARRAY(rpc_lookup, struct rpc_table, rpc_lookup_size);
         if (NULL == rpc_entry) {
                 rpc_lookup_size--;
                 DEBUG(0, ("rpc_pipe_register_commands: memory allocation failed\n"));
@@ -843,13 +843,10 @@ NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *s
         
         rpc_entry = rpc_lookup + (rpc_lookup_size - 1);
         ZERO_STRUCTP(rpc_entry);
-        rpc_entry->pipe.clnt = strdup(clnt);
-        rpc_entry->pipe.srv = strdup(srv);
-        rpc_entry->cmds = realloc(rpc_entry->cmds, 
-                                  (rpc_entry->n_cmds + size) *
-                                  sizeof(struct api_struct));
-        memcpy(rpc_entry->cmds + rpc_entry->n_cmds, cmds,
-               size * sizeof(struct api_struct));
+        rpc_entry->pipe.clnt = SMB_STRDUP(clnt);
+        rpc_entry->pipe.srv = SMB_STRDUP(srv);
+        rpc_entry->cmds = SMB_REALLOC_ARRAY(rpc_entry->cmds, struct api_struct, rpc_entry->n_cmds + size);
+        memcpy(rpc_entry->cmds + rpc_entry->n_cmds, cmds, size * sizeof(struct api_struct));
         rpc_entry->n_cmds += size;
         
         return NT_STATUS_OK;
@@ -1585,9 +1582,7 @@ BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
        if ((DEBUGLEVEL >= 10) && 
            (prs_offset(&p->in_data.data) != prs_data_size(&p->in_data.data))) {
                size_t data_len = prs_data_size(&p->in_data.data) - prs_offset(&p->in_data.data);
-               char *data;
-
-               data = malloc(data_len);
+               char *data = SMB_MALLOC(data_len);
 
                DEBUG(10, ("api_rpcTNP: rpc input buffer underflow (parse error?)\n"));
                if (data) {
index 562b55b8f76e76ccdca81cafb960c519ddca0c8e..8720a4df6826543153e3bddb756c6e23178186cb 100644 (file)
@@ -204,8 +204,7 @@ smb_np_struct *open_rpc_pipe_p(char *pipe_name,
        for (p = Pipes; p; p = p->next)
                DEBUG(5,("open_rpc_pipe_p: name %s pnum=%x\n", p->name, p->pnum));  
 
-       p = (smb_np_struct *)malloc(sizeof(*p));
-
+       p = SMB_MALLOC_P(smb_np_struct);
        if (!p) {
                DEBUG(0,("ERROR! no memory for pipes_struct!\n"));
                return NULL;
@@ -283,10 +282,9 @@ static void *make_internal_rpc_pipe_p(char *pipe_name,
                return NULL;
        }
 
-       p = (pipes_struct *)malloc(sizeof(*p));
+       p = SMB_MALLOC_P(pipes_struct);
 
-       if (!p)
-       {
+       if (!p) {
                DEBUG(0,("ERROR! no memory for pipes_struct!\n"));
                return NULL;
        }
index a4e3638be605494772f6e9cdbfa4a45a0f131cd0..dc9db47c66326dd05239a3820624b315da02eba7 100644 (file)
@@ -97,7 +97,7 @@ static NTSTATUS open_registry_key(pipes_struct *p, POLICY_HND *hnd, REGISTRY_KEY
        if ( subkey_len && subkeyname2[subkey_len-1] == '\\' )
                subkeyname2[subkey_len-1] = '\0';
 
-       if ((regkey=(REGISTRY_KEY*)malloc(sizeof(REGISTRY_KEY))) == NULL)
+       if ((regkey=SMB_MALLOC_P(REGISTRY_KEY)) == NULL)
                return NT_STATUS_NO_MEMORY;
                
        ZERO_STRUCTP( regkey );
@@ -373,7 +373,7 @@ NTSTATUS _reg_info(pipes_struct *p, REG_Q_INFO *q_u, REG_R_INFO *r_u)
        /* couple of hard coded registry values */
        
        if ( strequal(name, "RefusePasswordChange") ) {
-               if ( (val = (REGISTRY_VALUE*)malloc(sizeof(REGISTRY_VALUE))) == NULL ) {
+               if ( (val = SMB_MALLOC_P(REGISTRY_VALUE)) == NULL ) {
                        DEBUG(0,("_reg_info: malloc() failed!\n"));
                        return NT_STATUS_NO_MEMORY;
                }
index 0c52e859ca80e3d177746ed11a3122bc95f6a818..5f74df420a1b1a4248da4728927dc4adf3e5ecfc 100644 (file)
@@ -137,7 +137,7 @@ static struct samr_info *get_samr_info_by_sid(DOM_SID *psid)
 
        mem_ctx = talloc_init("samr_info for domain sid %s", sid_str);
 
-       if ((info = (struct samr_info *)talloc(mem_ctx, sizeof(struct samr_info))) == NULL)
+       if ((info = TALLOC_P(mem_ctx, struct samr_info)) == NULL)
                return NULL;
 
        ZERO_STRUCTP(info);
@@ -255,8 +255,8 @@ static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask, BOO
                if (info->disp_info.num_user_account % MAX_SAM_ENTRIES == 0) {
                
                        DEBUG(10,("load_sampwd_entries: allocating more memory\n"));
-                       pwd_array=(SAM_ACCOUNT *)talloc_realloc(mem_ctx, info->disp_info.disp_user_info, 
-                                         (info->disp_info.num_user_account+MAX_SAM_ENTRIES)*sizeof(SAM_ACCOUNT));
+                       pwd_array=TALLOC_REALLOC_ARRAY(mem_ctx, info->disp_info.disp_user_info, SAM_ACCOUNT,
+                                         info->disp_info.num_user_account+MAX_SAM_ENTRIES);
 
                        if (pwd_array==NULL)
                                return NT_STATUS_NO_MEMORY;
@@ -322,7 +322,7 @@ static NTSTATUS load_group_domain_entries(struct samr_info *info, DOM_SID *sid)
 
        info->disp_info.num_group_account=group_entries;
 
-       grp_array=(DOMAIN_GRP *)talloc(mem_ctx, info->disp_info.num_group_account*sizeof(DOMAIN_GRP));
+       grp_array=TALLOC_ARRAY(mem_ctx, DOMAIN_GRP, info->disp_info.num_group_account);
        if (group_entries!=0 && grp_array==NULL) {
                DEBUG(1, ("load_group_domain_entries: talloc() failed for grp_array!\n"));
                SAFE_FREE(map);
@@ -716,9 +716,9 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN
        if (num_entries == 0)
                return NT_STATUS_OK;
 
-       sam = (SAM_ENTRY *)talloc_zero(ctx, sizeof(SAM_ENTRY)*num_entries);
+       sam = TALLOC_ZERO_ARRAY(ctx, SAM_ENTRY, num_entries);
 
-       uni_name = (UNISTR2 *)talloc_zero(ctx, sizeof(UNISTR2)*num_entries);
+       uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_entries);
 
        if (sam == NULL || uni_name == NULL) {
                DEBUG(0, ("make_user_sam_entry_list: talloc_zero failed!\n"));
@@ -871,9 +871,8 @@ static void make_group_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UNIST
        if (num_sam_entries == 0)
                return;
 
-       sam = (SAM_ENTRY *)talloc_zero(ctx, sizeof(SAM_ENTRY)*num_sam_entries);
-
-       uni_name = (UNISTR2 *)talloc_zero(ctx, sizeof(UNISTR2)*num_sam_entries);
+       sam = TALLOC_ZERO_ARRAY(ctx, SAM_ENTRY, num_sam_entries);
+       uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_sam_entries);
 
        if (sam == NULL || uni_name == NULL) {
                DEBUG(0, ("NULL pointers in SAMR_R_QUERY_DISPINFO\n"));
@@ -923,7 +922,7 @@ static NTSTATUS get_group_domain_entries( TALLOC_CTX *ctx,
                num_entries=max_entries;
        }
 
-       *d_grp=(DOMAIN_GRP *)talloc_zero(ctx, num_entries*sizeof(DOMAIN_GRP));
+       *d_grp=TALLOC_ZERO_ARRAY(ctx, DOMAIN_GRP, num_entries);
        if (num_entries!=0 && *d_grp==NULL){
                SAFE_FREE(map);
                return NT_STATUS_NO_MEMORY;
@@ -969,7 +968,7 @@ static NTSTATUS get_alias_entries( TALLOC_CTX *ctx, DOMAIN_GRP **d_grp,
        if (*p_num_entries == 0)
                return NT_STATUS_OK;
 
-       *d_grp = talloc(ctx, sizeof(DOMAIN_GRP) * (*p_num_entries));
+       *d_grp = TALLOC_ARRAY(ctx, DOMAIN_GRP, *p_num_entries);
 
        if (*d_grp == NULL) {
                SAFE_FREE(info);
@@ -1187,7 +1186,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
                DEBUG(5, ("samr_reply_query_dispinfo: buffer size limits to only %d entries\n", max_entries));
        }
 
-       if (!(ctr = (SAM_DISPINFO_CTR *)talloc_zero(p->mem_ctx,sizeof(SAM_DISPINFO_CTR))))
+       if (!(ctr = TALLOC_ZERO_P(p->mem_ctx,SAM_DISPINFO_CTR)))
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(ctr);
@@ -1196,7 +1195,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
        switch (q_u->switch_level) {
        case 0x1:
                if (max_entries) {
-                       if (!(ctr->sam.info1 = (SAM_DISPINFO_1 *)talloc_zero(p->mem_ctx,max_entries*sizeof(SAM_DISPINFO_1))))
+                       if (!(ctr->sam.info1 = TALLOC_ZERO_ARRAY(p->mem_ctx,SAM_DISPINFO_1,max_entries)))
                                return NT_STATUS_NO_MEMORY;
                }
                disp_ret = init_sam_dispinfo_1(p->mem_ctx, ctr->sam.info1, max_entries, enum_context, 
@@ -1206,7 +1205,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
                break;
        case 0x2:
                if (max_entries) {
-                       if (!(ctr->sam.info2 = (SAM_DISPINFO_2 *)talloc_zero(p->mem_ctx,max_entries*sizeof(SAM_DISPINFO_2))))
+                       if (!(ctr->sam.info2 = TALLOC_ZERO_ARRAY(p->mem_ctx,SAM_DISPINFO_2,max_entries)))
                                return NT_STATUS_NO_MEMORY;
                }
                disp_ret = init_sam_dispinfo_2(p->mem_ctx, ctr->sam.info2, max_entries, enum_context, 
@@ -1216,7 +1215,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
                break;
        case 0x3:
                if (max_entries) {
-                       if (!(ctr->sam.info3 = (SAM_DISPINFO_3 *)talloc_zero(p->mem_ctx,max_entries*sizeof(SAM_DISPINFO_3))))
+                       if (!(ctr->sam.info3 = TALLOC_ZERO_ARRAY(p->mem_ctx,SAM_DISPINFO_3,max_entries)))
                                return NT_STATUS_NO_MEMORY;
                }
                disp_ret = init_sam_dispinfo_3(p->mem_ctx, ctr->sam.info3, max_entries, enum_context, info->disp_info.disp_group_info);
@@ -1225,7 +1224,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
                break;
        case 0x4:
                if (max_entries) {
-                       if (!(ctr->sam.info4 = (SAM_DISPINFO_4 *)talloc_zero(p->mem_ctx,max_entries*sizeof(SAM_DISPINFO_4))))
+                       if (!(ctr->sam.info4 = TALLOC_ZERO_ARRAY(p->mem_ctx,SAM_DISPINFO_4,max_entries)))
                                return NT_STATUS_NO_MEMORY;
                }
                disp_ret = init_sam_dispinfo_4(p->mem_ctx, ctr->sam.info4, max_entries, enum_context, info->disp_info.disp_user_info);
@@ -1234,7 +1233,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
                break;
        case 0x5:
                if (max_entries) {
-                       if (!(ctr->sam.info5 = (SAM_DISPINFO_5 *)talloc_zero(p->mem_ctx,max_entries*sizeof(SAM_DISPINFO_5))))
+                       if (!(ctr->sam.info5 = TALLOC_ZERO_ARRAY(p->mem_ctx,SAM_DISPINFO_5,max_entries)))
                                return NT_STATUS_NO_MEMORY;
                }
                disp_ret = init_sam_dispinfo_5(p->mem_ctx, ctr->sam.info5, max_entries, enum_context, info->disp_info.disp_group_info);
@@ -1512,11 +1511,11 @@ static BOOL make_samr_lookup_rids(TALLOC_CTX *ctx, uint32 num_names, fstring nam
        *pp_hdr_name = NULL;
 
        if (num_names != 0) {
-               hdr_name = (UNIHDR *)talloc_zero(ctx, sizeof(UNIHDR)*num_names);
+               hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names);
                if (hdr_name == NULL)
                        return False;
 
-               uni_name = (UNISTR2 *)talloc_zero(ctx,sizeof(UNISTR2)*num_names);
+               uni_name = TALLOC_ZERO_ARRAY(ctx,UNISTR2, num_names);
                if (uni_name == NULL)
                        return False;
        }
@@ -1562,7 +1561,7 @@ NTSTATUS _samr_lookup_rids(pipes_struct *p, SAMR_Q_LOOKUP_RIDS *q_u, SAMR_R_LOOK
        }
 
        if (num_rids) {
-               if ((group_attrs = (uint32 *)talloc_zero(p->mem_ctx, num_rids * sizeof(uint32))) == NULL)
+               if ((group_attrs = TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num_rids )) == NULL)
                        return NT_STATUS_NO_MEMORY;
        }
  
@@ -1854,7 +1853,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
 
        DEBUG(5,("_samr_query_userinfo: sid:%s\n", sid_string_static(&info->sid)));
 
-       ctr = (SAM_USERINFO_CTR *)talloc_zero(p->mem_ctx, sizeof(SAM_USERINFO_CTR));
+       ctr = TALLOC_ZERO_P(p->mem_ctx, SAM_USERINFO_CTR);
        if (!ctr)
                return NT_STATUS_NO_MEMORY;
 
@@ -1865,7 +1864,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
 
        switch (q_u->switch_value) {
        case 0x10:
-               ctr->info.id10 = (SAM_USER_INFO_10 *)talloc_zero(p->mem_ctx, sizeof(SAM_USER_INFO_10));
+               ctr->info.id10 = TALLOC_ZERO_P(p->mem_ctx, SAM_USER_INFO_10);
                if (ctr->info.id10 == NULL)
                        return NT_STATUS_NO_MEMORY;
 
@@ -1883,11 +1882,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
             expire.low = 0xffffffff;
             expire.high = 0x7fffffff;
 
-            ctr->info.id = (SAM_USER_INFO_11 *)talloc_zero(p->mem_ctx,
-                                    sizeof
-                                    (*ctr->
-                                     info.
-                                     id11));
+            ctr->info.id = TALLOC_ZERO_P(p->mem_ctx, SAM_USER_INFO_11));
            ZERO_STRUCTP(ctr->info.id11);
             init_sam_user_info11(ctr->info.id11, &expire,
                          "BROOKFIELDS$",    /* name */
@@ -1900,7 +1895,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
 #endif
 
        case 0x12:
-               ctr->info.id12 = (SAM_USER_INFO_12 *)talloc_zero(p->mem_ctx, sizeof(SAM_USER_INFO_12));
+               ctr->info.id12 = TALLOC_ZERO_P(p->mem_ctx, SAM_USER_INFO_12);
                if (ctr->info.id12 == NULL)
                        return NT_STATUS_NO_MEMORY;
 
@@ -1909,7 +1904,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
                break;
                
        case 20:
-               ctr->info.id20 = (SAM_USER_INFO_20 *)talloc_zero(p->mem_ctx,sizeof(SAM_USER_INFO_20));
+               ctr->info.id20 = TALLOC_ZERO_P(p->mem_ctx,SAM_USER_INFO_20);
                if (ctr->info.id20 == NULL)
                        return NT_STATUS_NO_MEMORY;
                if (!NT_STATUS_IS_OK(r_u->status = get_user_info_20(p->mem_ctx, ctr->info.id20, &info->sid)))
@@ -1917,7 +1912,7 @@ NTSTATUS _samr_query_userinfo(pipes_struct *p, SAMR_Q_QUERY_USERINFO *q_u, SAMR_
                break;
 
        case 21:
-               ctr->info.id21 = (SAM_USER_INFO_21 *)talloc_zero(p->mem_ctx,sizeof(SAM_USER_INFO_21));
+               ctr->info.id21 = TALLOC_ZERO_P(p->mem_ctx,SAM_USER_INFO_21);
                if (ctr->info.id21 == NULL)
                        return NT_STATUS_NO_MEMORY;
                if (!NT_STATUS_IS_OK(r_u->status = get_user_info_21(p->mem_ctx, ctr->info.id21, 
@@ -2025,8 +2020,7 @@ NTSTATUS _samr_query_usergroups(pipes_struct *p, SAMR_Q_QUERY_USERGROUPS *q_u, S
                                        &(sids[i]), &rid))
                        continue;
 
-               gids = talloc_realloc(p->mem_ctx, gids,
-                                     sizeof(*gids) * (num_gids+1));
+               gids = TALLOC_REALLOC_ARRAY(p->mem_ctx, gids, DOM_GID, num_gids+1);
                gids[num_gids].attr=7;
                gids[num_gids].g_rid = rid;
                num_gids += 1;
@@ -2064,7 +2058,7 @@ NTSTATUS _samr_query_dom_info(pipes_struct *p, SAMR_Q_QUERY_DOMAIN_INFO *q_u, SA
 
        uint32 num_users=0, num_groups=0, num_aliases=0;
 
-       if ((ctr = (SAM_UNK_CTR *)talloc_zero(p->mem_ctx, sizeof(SAM_UNK_CTR))) == NULL)
+       if ((ctr = TALLOC_ZERO_P(p->mem_ctx, SAM_UNK_CTR)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(ctr);
@@ -2549,8 +2543,8 @@ static BOOL make_enum_domains(TALLOC_CTX *ctx, SAM_ENTRY **pp_sam,
        if (num_sam_entries == 0)
                return True;
 
-       sam = (SAM_ENTRY *)talloc_zero(ctx, sizeof(SAM_ENTRY)*num_sam_entries);
-       uni_name = (UNISTR2 *)talloc_zero(ctx, sizeof(UNISTR2)*num_sam_entries);
+       sam = TALLOC_ZERO_ARRAY(ctx, SAM_ENTRY, num_sam_entries);
+       uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_sam_entries);
 
        if (sam == NULL || uni_name == NULL)
                return False;
@@ -3193,7 +3187,7 @@ NTSTATUS _samr_query_useraliases(pipes_struct *p, SAMR_Q_QUERY_USERALIASES *q_u,
            !sid_check_is_builtin(&info->sid))
                return NT_STATUS_OBJECT_TYPE_MISMATCH;
 
-       members = talloc(p->mem_ctx, sizeof(DOM_SID) * q_u->num_sids1);
+       members = TALLOC_ARRAY(p->mem_ctx, DOM_SID, q_u->num_sids1);
 
        if (members == NULL)
                return NT_STATUS_NO_MEMORY;
@@ -3219,8 +3213,7 @@ NTSTATUS _samr_query_useraliases(pipes_struct *p, SAMR_Q_QUERY_USERALIASES *q_u,
                if (!sid_peek_check_rid(&info->sid, &aliases[i], &rid))
                        continue;
 
-               rids = talloc_realloc(p->mem_ctx, rids,
-                                     sizeof(*rids) * (num_groups+1));
+               rids = TALLOC_REALLOC_ARRAY(p->mem_ctx, rids, uint32, num_groups+1);
 
                if (rids == NULL)
                        return NT_STATUS_NO_MEMORY;
@@ -3264,7 +3257,7 @@ NTSTATUS _samr_query_aliasmem(pipes_struct *p, SAMR_Q_QUERY_ALIASMEM *q_u, SAMR_
        if (!pdb_enum_aliasmem(&alias_sid, &sids, &num_sids))
                return NT_STATUS_NO_SUCH_ALIAS;
 
-       sid = (DOM_SID2 *)talloc_zero(p->mem_ctx, sizeof(DOM_SID2) * num_sids); 
+       sid = TALLOC_ZERO_ARRAY(p->mem_ctx, DOM_SID2, num_sids);        
        if (num_sids!=0 && sid == NULL) {
                SAFE_FREE(sids);
                return NT_STATUS_NO_MEMORY;
@@ -3290,7 +3283,7 @@ static void add_uid_to_array_unique(uid_t uid, uid_t **uids, int *num)
                        return;
        }
        
-       *uids = Realloc(*uids, (*num+1) * sizeof(uid_t));
+       *uids = SMB_REALLOC_ARRAY(*uids, uid_t, *num+1);
 
        if (*uids == NULL)
                return;
@@ -3387,8 +3380,8 @@ NTSTATUS _samr_query_groupmem(pipes_struct *p, SAMR_Q_QUERY_GROUPMEM *q_u, SAMR_
        if(!get_memberuids(gid, &uids, &num))
                return NT_STATUS_NO_SUCH_GROUP;
 
-       rid=talloc_zero(p->mem_ctx, sizeof(uint32)*num);
-       attr=talloc_zero(p->mem_ctx, sizeof(uint32)*num);
+       rid=TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num);
+       attr=TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num);
        
        if (num!=0 && (rid==NULL || attr==NULL))
                return NT_STATUS_NO_MEMORY;
@@ -3978,7 +3971,7 @@ NTSTATUS _samr_query_groupinfo(pipes_struct *p, SAMR_Q_QUERY_GROUPINFO *q_u, SAM
        if (!ret)
                return NT_STATUS_INVALID_HANDLE;
 
-       ctr=(GROUP_INFO_CTR *)talloc_zero(p->mem_ctx, sizeof(GROUP_INFO_CTR));
+       ctr=TALLOC_ZERO_P(p->mem_ctx, GROUP_INFO_CTR);
        if (ctr==NULL)
                return NT_STATUS_NO_MEMORY;
 
@@ -4309,7 +4302,7 @@ NTSTATUS _samr_unknown_2e(pipes_struct *p, SAMR_Q_UNKNOWN_2E *q_u, SAMR_R_UNKNOW
 
        uint32 account_policy_temp;
 
-       if ((ctr = (SAM_UNK_CTR *)talloc_zero(p->mem_ctx, sizeof(SAM_UNK_CTR))) == NULL)
+       if ((ctr = TALLOC_ZERO_P(p->mem_ctx, SAM_UNK_CTR)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        ZERO_STRUCTP(ctr);
index aba7e6c22fd380fecae0920b5dea17bec790a49f..78b5fb61fac2b7ee1bed6642cede90e79b07ee3d 100644 (file)
@@ -238,7 +238,7 @@ static SPOOL_NOTIFY_OPTION *dup_spool_notify_option(SPOOL_NOTIFY_OPTION *sp)
        if (!sp)
                return NULL;
 
-       new_sp = (SPOOL_NOTIFY_OPTION *)malloc(sizeof(SPOOL_NOTIFY_OPTION));
+       new_sp = SMB_MALLOC_P(SPOOL_NOTIFY_OPTION);
        if (!new_sp)
                return NULL;
 
@@ -585,7 +585,7 @@ static BOOL open_printer_hnd(pipes_struct *p, POLICY_HND *hnd, char *name, uint3
 
        DEBUG(10,("open_printer_hnd: name [%s]\n", name));
 
-       if((new_printer=(Printer_entry *)malloc(sizeof(Printer_entry))) == NULL)
+       if((new_printer=SMB_MALLOC_P(Printer_entry)) == NULL)
                return False;
 
        ZERO_STRUCTP(new_printer);
@@ -733,7 +733,7 @@ static void notify_string(struct spoolss_notify_msg *msg,
        init_unistr2(&unistr, msg->notify.data, UNI_STR_TERMINATE);
 
        data->notify_data.data.length = msg->len * 2;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, msg->len * 2);
+       data->notify_data.data.string = TALLOC_ARRAY(mem_ctx, uint16, msg->len);
 
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -770,7 +770,7 @@ static void notify_system_time(struct spoolss_notify_msg *msg,
                return;
 
        data->notify_data.data.length = prs_offset(&ps);
-       data->notify_data.data.string = talloc(mem_ctx, prs_offset(&ps));
+       data->notify_data.data.string = TALLOC(mem_ctx, prs_offset(&ps));
 
        prs_copy_all_data_out((char *)data->notify_data.data.string, &ps);
 
@@ -928,7 +928,7 @@ static int notify_msg_ctr_addmsg( SPOOLSS_NOTIFY_MSG_CTR *ctr, SPOOLSS_NOTIFY_MS
        if ( i == ctr->num_groups ) {
                ctr->num_groups++;
 
-               if ( !(groups = talloc_realloc( ctr->ctx, ctr->msg_groups, sizeof(SPOOLSS_NOTIFY_MSG_GROUP)*ctr->num_groups)) ) {
+               if ( !(groups = TALLOC_REALLOC_ARRAY( ctr->ctx, ctr->msg_groups, SPOOLSS_NOTIFY_MSG_GROUP, ctr->num_groups)) ) {
                        DEBUG(0,("notify_msg_ctr_addmsg: talloc_realloc() failed!\n"));
                        return 0;
                }
@@ -946,7 +946,7 @@ static int notify_msg_ctr_addmsg( SPOOLSS_NOTIFY_MSG_CTR *ctr, SPOOLSS_NOTIFY_MS
        
        msg_grp->num_msgs++;
        
-       if ( !(msg_list =  talloc_realloc( ctr->ctx, msg_grp->msgs, sizeof(SPOOLSS_NOTIFY_MSG)*msg_grp->num_msgs )) ) {
+       if ( !(msg_list = TALLOC_REALLOC_ARRAY( ctr->ctx, msg_grp->msgs, SPOOLSS_NOTIFY_MSG, msg_grp->num_msgs )) ) {
                DEBUG(0,("notify_msg_ctr_addmsg: talloc_realloc() failed for new message [%d]!\n", msg_grp->num_msgs));
                return 0;
        }
@@ -958,7 +958,7 @@ static int notify_msg_ctr_addmsg( SPOOLSS_NOTIFY_MSG_CTR *ctr, SPOOLSS_NOTIFY_MS
        /* need to allocate own copy of data */
        
        if ( msg->len != 0 ) 
-               msg_grp->msgs[new_slot].notify.data = talloc_memdup( ctr->ctx, msg->notify.data, msg->len );
+               msg_grp->msgs[new_slot].notify.data = TALLOC_MEMDUP( ctr->ctx, msg->notify.data, msg->len );
        
        return ctr->num_groups;
 }
@@ -1016,7 +1016,7 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
                
                /* allocate the max entries possible */
                
-               data = talloc( mem_ctx, msg_group->num_msgs*sizeof(SPOOL_NOTIFY_INFO_DATA) );
+               data = TALLOC_ARRAY( mem_ctx, SPOOL_NOTIFY_INFO_DATA, msg_group->num_msgs);
                ZERO_STRUCTP(data);
                
                /* build the array of change notifications */
@@ -1436,7 +1436,7 @@ static DEVICEMODE* dup_devicemode(TALLOC_CTX *ctx, DEVICEMODE *devmode)
        
        /* bulk copy first */
        
-       d = talloc_memdup(ctx, devmode, sizeof(DEVICEMODE));
+       d = TALLOC_MEMDUP(ctx, devmode, sizeof(DEVICEMODE));
        if (!d)
                return NULL;
                
@@ -1444,7 +1444,7 @@ static DEVICEMODE* dup_devicemode(TALLOC_CTX *ctx, DEVICEMODE *devmode)
        
        len = unistrlen(devmode->devicename.buffer);
        if (len != -1) {
-               d->devicename.buffer = talloc(ctx, len*2);
+               d->devicename.buffer = TALLOC_ARRAY(ctx, uint16, len);
                if (unistrcpy(d->devicename.buffer, devmode->devicename.buffer) != len)
                        return NULL;
        }
@@ -1452,12 +1452,12 @@ static DEVICEMODE* dup_devicemode(TALLOC_CTX *ctx, DEVICEMODE *devmode)
 
        len = unistrlen(devmode->formname.buffer);
        if (len != -1) {
-               d->devicename.buffer = talloc(ctx, len*2);
+               d->devicename.buffer = TALLOC_ARRAY(ctx, uint16, len);
                if (unistrcpy(d->formname.buffer, devmode->formname.buffer) != len)
                        return NULL;
        }
 
-       d->private = talloc_memdup(ctx, devmode->private, devmode->driverextra);
+       d->private = TALLOC_MEMDUP(ctx, devmode->private, devmode->driverextra);
        
        return d;
 }
@@ -1894,7 +1894,7 @@ BOOL convert_devicemode(const char *printername, const DEVICEMODE *devmode,
        if ((devmode->driverextra != 0) && (devmode->private != NULL)) {
                SAFE_FREE(nt_devmode->private);
                nt_devmode->driverextra=devmode->driverextra;
-               if((nt_devmode->private=(uint8 *)malloc(nt_devmode->driverextra * sizeof(uint8))) == NULL)
+               if((nt_devmode->private=SMB_MALLOC_ARRAY(uint8, nt_devmode->driverextra)) == NULL)
                        return False;
                memcpy(nt_devmode->private, devmode->private, nt_devmode->driverextra);
        }
@@ -2235,11 +2235,11 @@ static WERROR get_printer_dataex( TALLOC_CTX *ctx, NT_PRINTER_INFO_LEVEL *printe
                
                /* special case for 0 length values */
                if ( data_len ) {
-                       if ( (*data  = (uint8 *)talloc_memdup(ctx, regval_data_p(val), data_len)) == NULL )
+                       if ( (*data  = (uint8 *)TALLOC_MEMDUP(ctx, regval_data_p(val), data_len)) == NULL )
                                return WERR_NOMEM;
                }
                else {
-                       if ( (*data  = (uint8 *)talloc_zero(ctx, in_size)) == NULL )
+                       if ( (*data  = (uint8 *)TALLOC_ZERO(ctx, in_size)) == NULL )
                                return WERR_NOMEM;
                }
        }
@@ -2286,7 +2286,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                
        if (!StrCaseCmp(value, "W3SvcInstalled")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc_zero(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC_ZERO(ctx, 4*sizeof(uint8) )) == NULL)
                        return WERR_NOMEM;
                *needed = 0x4;
                return WERR_OK;
@@ -2294,7 +2294,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "BeepEnabled")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4*sizeof(uint8) )) == NULL)
                        return WERR_NOMEM;
                SIVAL(*data, 0, 0x00);
                *needed = 0x4;                  
@@ -2303,7 +2303,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "EventLog")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
                        return WERR_NOMEM;
                /* formally was 0x1b */
                SIVAL(*data, 0, 0x0);
@@ -2313,7 +2313,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "NetPopup")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
                        return WERR_NOMEM;
                SIVAL(*data, 0, 0x00);
                *needed = 0x4;
@@ -2322,7 +2322,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "MajorVersion")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
                        return WERR_NOMEM;
 
                /* Windows NT 4.0 seems to not allow uploading of drivers
@@ -2341,7 +2341,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "MinorVersion")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
                        return WERR_NOMEM;
                SIVAL(*data, 0, 0);
                *needed = 0x4;
@@ -2359,7 +2359,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                *type = 0x3;
                *needed = 0x114;
 
-               if((*data = (uint8 *)talloc(ctx, (*needed)*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, *needed)) == NULL)
                        return WERR_NOMEM;
                ZERO_STRUCTP( *data );
                
@@ -2378,7 +2378,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                const char *string="C:\\PRINTERS";
                *type = 0x1;                    
                *needed = 2*(strlen(string)+1);         
-               if((*data  = (uint8 *)talloc(ctx, ((*needed > in_size) ? *needed:in_size) *sizeof(uint8))) == NULL)
+               if((*data  = (uint8 *)TALLOC(ctx, (*needed > in_size) ? *needed:in_size )) == NULL)
                        return WERR_NOMEM;
                memset(*data, 0, (*needed > in_size) ? *needed:in_size);
                
@@ -2394,7 +2394,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                const char *string="Windows NT x86";
                *type = 0x1;                    
                *needed = 2*(strlen(string)+1); 
-               if((*data  = (uint8 *)talloc(ctx, ((*needed > in_size) ? *needed:in_size) *sizeof(uint8))) == NULL)
+               if((*data  = (uint8 *)TALLOC(ctx, (*needed > in_size) ? *needed:in_size )) == NULL)
                        return WERR_NOMEM;
                memset(*data, 0, (*needed > in_size) ? *needed:in_size);
                for (i=0; i<strlen(string); i++) {
@@ -2406,7 +2406,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
 
        if (!StrCaseCmp(value, "DsPresent")) {
                *type = 0x4;
-               if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
+               if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
                        return WERR_NOMEM;
                SIVAL(*data, 0, 0x01);
                *needed = 0x4;
@@ -2420,7 +2420,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                        return WERR_BADFILE;
                *type = 0x1;                    
                *needed = 2*(strlen(hostname)+1);       
-               if((*data  = (uint8 *)talloc(ctx, ((*needed > in_size) ? *needed:in_size) *sizeof(uint8))) == NULL)
+               if((*data  = (uint8 *)TALLOC(ctx, (*needed > in_size) ? *needed:in_size )) == NULL)
                        return WERR_NOMEM;
                memset(*data, 0, (*needed > in_size) ? *needed:in_size);
                for (i=0; i<strlen(hostname); i++) {
@@ -2495,7 +2495,7 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO
                if ( strequal(value, "ChangeId") ) {
                        *type = REG_DWORD;
                        *needed = sizeof(uint32);
-                       if ( (*data = (uint8*)talloc(p->mem_ctx, sizeof(uint32))) == NULL) {
+                       if ( (*data = (uint8*)TALLOC(p->mem_ctx, sizeof(uint32))) == NULL) {
                                status = WERR_NOMEM;
                                goto done;
                        }
@@ -2517,7 +2517,7 @@ done:
                /* reply this param doesn't exist */
                
                if ( *out_size ) {
-                       if((*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL) {
+                       if((*data=(uint8 *)TALLOC_ZERO_ARRAY(p->mem_ctx, uint8, *out_size)) == NULL) {
                                if ( printer ) 
                                        free_a_printer( &printer, 2 );
                                return WERR_NOMEM;
@@ -2764,7 +2764,7 @@ void spoolss_notify_server_name(int snum,
        len = rpcstr_push(temp, printer->info_2->servername, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
 
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2799,7 +2799,7 @@ void spoolss_notify_printer_name(int snum,
        len = rpcstr_push(temp, p, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2825,7 +2825,7 @@ void spoolss_notify_share_name(int snum,
        len = rpcstr_push(temp, lp_servicename(snum), sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2853,7 +2853,7 @@ void spoolss_notify_port_name(int snum,
        len = rpcstr_push(temp, printer->info_2->portname, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2880,7 +2880,7 @@ void spoolss_notify_driver_name(int snum,
        len = rpcstr_push(temp, printer->info_2->drivername, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2909,7 +2909,7 @@ void spoolss_notify_comment(int snum,
                len = rpcstr_push(temp, printer->info_2->comment, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2936,7 +2936,7 @@ void spoolss_notify_location(int snum,
        len = rpcstr_push(temp, printer->info_2->location,sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -2975,7 +2975,7 @@ void spoolss_notify_sepfile(int snum,
        len = rpcstr_push(temp, printer->info_2->sepfile, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3002,7 +3002,7 @@ void spoolss_notify_print_processor(int snum,
        len = rpcstr_push(temp,  printer->info_2->printprocessor, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3029,7 +3029,7 @@ void spoolss_notify_parameters(int snum,
        len = rpcstr_push(temp,  printer->info_2->parameters, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3056,7 +3056,7 @@ void spoolss_notify_datatype(int snum,
        len = rpcstr_push(temp, printer->info_2->datatype, sizeof(pstring)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3216,7 +3216,7 @@ static void spoolss_notify_username(int snum,
        len = rpcstr_push(temp, queue->fs_user, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3256,7 +3256,7 @@ static void spoolss_notify_job_name(int snum,
        len = rpcstr_push(temp, queue->fs_file, sizeof(temp)-2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3306,7 +3306,7 @@ static void spoolss_notify_job_status_string(int snum,
        len = rpcstr_push(temp, p, sizeof(temp) - 2, STR_TERMINATE);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
        
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3404,7 +3404,7 @@ static void spoolss_notify_submitted_time(int snum,
        len = sizeof(SYSTEMTIME);
 
        data->notify_data.data.length = len;
-       data->notify_data.data.string = (uint16 *)talloc(mem_ctx, len);
+       data->notify_data.data.string = (uint16 *)TALLOC(mem_ctx, len);
 
        if (!data->notify_data.data.string) {
                data->notify_data.data.length = 0;
@@ -3626,7 +3626,7 @@ static BOOL construct_notify_printer_info(Printer_entry *print_hnd, SPOOL_NOTIFY
                if (!search_notify(type, field, &j) )
                        continue;
 
-               if((tid=(SPOOL_NOTIFY_INFO_DATA *)Realloc(info->data, (info->count+1)*sizeof(SPOOL_NOTIFY_INFO_DATA))) == NULL) {
+               if((tid=SMB_REALLOC_ARRAY(info->data, SPOOL_NOTIFY_INFO_DATA, info->count+1)) == NULL) {
                        DEBUG(2,("construct_notify_printer_info: failed to enlarge buffer info->data!\n"));
                        return False;
                } else 
@@ -3682,7 +3682,7 @@ static BOOL construct_notify_jobs_info(print_queue_struct *queue,
                if (!search_notify(type, field, &j) )
                        continue;
 
-               if((tid=Realloc(info->data, (info->count+1)*sizeof(SPOOL_NOTIFY_INFO_DATA))) == NULL) {
+               if((tid=SMB_REALLOC_ARRAY(info->data, SPOOL_NOTIFY_INFO_DATA, info->count+1)) == NULL) {
                        DEBUG(2,("construct_notify_jobs_info: failed to enlarg buffer info->data!\n"));
                        return False;
                }
@@ -3966,7 +3966,7 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd, PRINTER_INFO_0 *p
 
        /* it's the first time, add it to the list */
        if (session_counter==NULL) {
-               if((session_counter=(counter_printer_0 *)malloc(sizeof(counter_printer_0))) == NULL) {
+               if((session_counter=SMB_MALLOC_P(counter_printer_0)) == NULL) {
                        free_a_printer(&ntprinter, 2);
                        return False;
                }
@@ -4160,7 +4160,7 @@ DEVICEMODE *construct_dev_mode(int snum)
                goto done;
        }
 
-       if ((devmode = (DEVICEMODE *)malloc(sizeof(DEVICEMODE))) == NULL) {
+       if ((devmode = SMB_MALLOC_P(DEVICEMODE)) == NULL) {
                DEBUG(2,("construct_dev_mode: malloc fail.\n"));
                goto done;
        }
@@ -4257,7 +4257,7 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd, PRINTER_INFO_3 **
                return False;
 
        *pp_printer = NULL;
-       if ((printer = (PRINTER_INFO_3 *)malloc(sizeof(PRINTER_INFO_3))) == NULL) {
+       if ((printer = SMB_MALLOC_P(PRINTER_INFO_3)) == NULL) {
                DEBUG(2,("construct_printer_info_3: malloc fail.\n"));
                return False;
        }
@@ -4386,7 +4386,7 @@ static WERROR enum_all_printers_info_1(uint32 flags, NEW_BUFFER *buffer, uint32
                        DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", lp_servicename(snum), snum));
 
                        if (construct_printer_info_1(NULL, flags, &current_prt, snum)) {
-                               if((tp=Realloc(printers, (*returned +1)*sizeof(PRINTER_INFO_1))) == NULL) {
+                               if((tp=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_1, *returned +1)) == NULL) {
                                        DEBUG(2,("enum_all_printers_info_1: failed to enlarge printers buffer!\n"));
                                        SAFE_FREE(printers);
                                        *returned=0;
@@ -4475,7 +4475,7 @@ static WERROR enum_all_printers_info_1_remote(fstring name, NEW_BUFFER *buffer,
         * undocumented RPC call.
         */
        
-       if((printer=(PRINTER_INFO_1 *)malloc(sizeof(PRINTER_INFO_1))) == NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_1)) == NULL)
                return WERR_NOMEM;
 
        *returned=1;
@@ -4559,7 +4559,7 @@ static WERROR enum_all_printers_info_2(NEW_BUFFER *buffer, uint32 offered, uint3
                        DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", lp_servicename(snum), snum));
                                
                        if (construct_printer_info_2(NULL, &current_prt, snum)) {
-                               if((tp=Realloc(printers, (*returned +1)*sizeof(PRINTER_INFO_2))) == NULL) {
+                               if((tp=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_2, *returned +1)) == NULL) {
                                        DEBUG(2,("enum_all_printers_info_2: failed to enlarge printers buffer!\n"));
                                        SAFE_FREE(printers);
                                        *returned = 0;
@@ -4735,7 +4735,7 @@ static WERROR getprinter_level_0(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_0 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_0*)malloc(sizeof(PRINTER_INFO_0))) == NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_0)) == NULL)
                return WERR_NOMEM;
 
        construct_printer_info_0(print_hnd, printer, snum);
@@ -4768,7 +4768,7 @@ static WERROR getprinter_level_1(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_1 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_1*)malloc(sizeof(PRINTER_INFO_1))) == NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_1)) == NULL)
                return WERR_NOMEM;
 
        construct_printer_info_1(print_hnd, PRINTER_ENUM_ICON8, printer, snum);
@@ -4801,7 +4801,7 @@ static WERROR getprinter_level_2(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_2 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_2*)malloc(sizeof(PRINTER_INFO_2)))==NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_2))==NULL)
                return WERR_NOMEM;
        
        construct_printer_info_2(print_hnd, printer, snum);
@@ -4868,7 +4868,7 @@ static WERROR getprinter_level_4(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_4 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_4*)malloc(sizeof(PRINTER_INFO_4)))==NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_4))==NULL)
                return WERR_NOMEM;
 
        if (!construct_printer_info_4(print_hnd, printer, snum))
@@ -4902,7 +4902,7 @@ static WERROR getprinter_level_5(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_5 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_5*)malloc(sizeof(PRINTER_INFO_5)))==NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_5))==NULL)
                return WERR_NOMEM;
 
        if (!construct_printer_info_5(print_hnd, printer, snum))
@@ -4933,7 +4933,7 @@ static WERROR getprinter_level_7(Printer_entry *print_hnd, int snum, NEW_BUFFER
 {
        PRINTER_INFO_7 *printer=NULL;
 
-       if((printer=(PRINTER_INFO_7*)malloc(sizeof(PRINTER_INFO_7)))==NULL)
+       if((printer=SMB_MALLOC_P(PRINTER_INFO_7))==NULL)
                return WERR_NOMEM;
 
        if (!construct_printer_info_7(print_hnd, printer, snum))
@@ -5135,7 +5135,7 @@ static uint32 init_unistr_array(uint16 **uni_array, fstring *char_array, const c
 
                /* add one extra unit16 for the second terminating NULL */
                
-               if ( (tuary=Realloc(*uni_array, (j+1+strlen(line)+2)*sizeof(uint16))) == NULL ) {
+               if ( (tuary=SMB_REALLOC_ARRAY(*uni_array, uint16, j+1+strlen(line)+2)) == NULL ) {
                        DEBUG(2,("init_unistr_array: Realloc error\n" ));
                        return 0;
                } else
@@ -5411,7 +5411,7 @@ static WERROR getprinterdriver2_level1(fstring servername, fstring architecture,
        DRIVER_INFO_1 *info=NULL;
        WERROR status;
        
-       if((info=(DRIVER_INFO_1 *)malloc(sizeof(DRIVER_INFO_1))) == NULL)
+       if((info=SMB_MALLOC_P(DRIVER_INFO_1)) == NULL)
                return WERR_NOMEM;
        
        status=construct_printer_driver_info_1(info, snum, servername, architecture, version);
@@ -5448,7 +5448,7 @@ static WERROR getprinterdriver2_level2(fstring servername, fstring architecture,
        DRIVER_INFO_2 *info=NULL;
        WERROR status;
        
-       if((info=(DRIVER_INFO_2 *)malloc(sizeof(DRIVER_INFO_2))) == NULL)
+       if((info=SMB_MALLOC_P(DRIVER_INFO_2)) == NULL)
                return WERR_NOMEM;
        
        status=construct_printer_driver_info_2(info, snum, servername, architecture, version);
@@ -6434,7 +6434,7 @@ static WERROR enumjobs_level1(print_queue_struct *queue, int snum,
        JOB_INFO_1 *info;
        int i;
        
-       info=(JOB_INFO_1 *)malloc(*returned*sizeof(JOB_INFO_1));
+       info=SMB_MALLOC_ARRAY(JOB_INFO_1,*returned);
        if (info==NULL) {
                SAFE_FREE(queue);
                *returned=0;
@@ -6484,7 +6484,7 @@ static WERROR enumjobs_level2(print_queue_struct *queue, int snum,
        WERROR result;
        DEVICEMODE *devmode = NULL;
        
-       info=(JOB_INFO_2 *)malloc(*returned*sizeof(JOB_INFO_2));
+       info=SMB_MALLOC_ARRAY(JOB_INFO_2,*returned);
        if (info==NULL) {
                *returned=0;
                result = WERR_NOMEM;
@@ -6676,7 +6676,7 @@ static WERROR enumprinterdrivers_level1(fstring servername, fstring architecture
                        return WERR_NOMEM;
 
                if(ndrivers != 0) {
-                       if((tdi1=(DRIVER_INFO_1 *)Realloc(driver_info_1, (*returned+ndrivers) * sizeof(DRIVER_INFO_1))) == NULL) {
+                       if((tdi1=SMB_REALLOC_ARRAY(driver_info_1, DRIVER_INFO_1, *returned+ndrivers )) == NULL) {
                                DEBUG(0,("enumprinterdrivers_level1: failed to enlarge driver info buffer!\n"));
                                SAFE_FREE(driver_info_1);
                                SAFE_FREE(list);
@@ -6755,7 +6755,7 @@ static WERROR enumprinterdrivers_level2(fstring servername, fstring architecture
                        return WERR_NOMEM;
 
                if(ndrivers != 0) {
-                       if((tdi2=(DRIVER_INFO_2 *)Realloc(driver_info_2, (*returned+ndrivers) * sizeof(DRIVER_INFO_2))) == NULL) {
+                       if((tdi2=SMB_REALLOC_ARRAY(driver_info_2, DRIVER_INFO_2, *returned+ndrivers )) == NULL) {
                                DEBUG(0,("enumprinterdrivers_level2: failed to enlarge driver info buffer!\n"));
                                SAFE_FREE(driver_info_2);
                                SAFE_FREE(list);
@@ -6835,7 +6835,7 @@ static WERROR enumprinterdrivers_level3(fstring servername, fstring architecture
                        return WERR_NOMEM;
 
                if(ndrivers != 0) {
-                       if((tdi3=(DRIVER_INFO_3 *)Realloc(driver_info_3, (*returned+ndrivers) * sizeof(DRIVER_INFO_3))) == NULL) {
+                       if((tdi3=SMB_REALLOC_ARRAY(driver_info_3, DRIVER_INFO_3, *returned+ndrivers )) == NULL) {
                                DEBUG(0,("enumprinterdrivers_level3: failed to enlarge driver info buffer!\n"));
                                SAFE_FREE(driver_info_3);
                                SAFE_FREE(list);
@@ -6988,7 +6988,7 @@ WERROR _spoolss_enumforms(pipes_struct *p, SPOOL_Q_ENUMFORMS *q_u, SPOOL_R_ENUMF
 
        switch (level) {
        case 1:
-               if ((forms_1=(FORM_1 *)malloc(*numofforms * sizeof(FORM_1))) == NULL) {
+               if ((forms_1=SMB_MALLOC_ARRAY(FORM_1, *numofforms)) == NULL) {
                        *numofforms=0;
                        return WERR_NOMEM;
                }
@@ -7192,7 +7192,7 @@ static WERROR enumports_level_1(NEW_BUFFER *buffer, uint32 offered, uint32 *need
                close(fd);
 
                if(numlines) {
-                       if((ports=(PORT_INFO_1 *)malloc( numlines * sizeof(PORT_INFO_1) )) == NULL) {
+                       if((ports=SMB_MALLOC_ARRAY( PORT_INFO_1, numlines )) == NULL) {
                                DEBUG(10,("Returning WERR_NOMEM [%s]\n", 
                                          dos_errstr(WERR_NOMEM)));
                                file_lines_free(qlines);
@@ -7212,7 +7212,7 @@ static WERROR enumports_level_1(NEW_BUFFER *buffer, uint32 offered, uint32 *need
        } else {
                *returned = 1; /* Sole Samba port returned. */
 
-               if((ports=(PORT_INFO_1 *)malloc( sizeof(PORT_INFO_1) )) == NULL)
+               if((ports=SMB_MALLOC_P(PORT_INFO_1)) == NULL)
                        return WERR_NOMEM;
        
                DEBUG(10,("enumports_level_1: port name %s\n", SAMBA_PRINTER_PORT_NAME));
@@ -7291,7 +7291,7 @@ static WERROR enumports_level_2(NEW_BUFFER *buffer, uint32 offered, uint32 *need
                close(fd);
 
                if(numlines) {
-                       if((ports=(PORT_INFO_2 *)malloc( numlines * sizeof(PORT_INFO_2) )) == NULL) {
+                       if((ports=SMB_MALLOC_ARRAY( PORT_INFO_2, numlines)) == NULL) {
                                file_lines_free(qlines);
                                return WERR_NOMEM;
                        }
@@ -7310,7 +7310,7 @@ static WERROR enumports_level_2(NEW_BUFFER *buffer, uint32 offered, uint32 *need
 
                *returned = 1;
 
-               if((ports=(PORT_INFO_2 *)malloc( sizeof(PORT_INFO_2) )) == NULL)
+               if((ports=SMB_MALLOC_P(PORT_INFO_2)) == NULL)
                        return WERR_NOMEM;
        
                DEBUG(10,("enumports_level_2: port name %s\n", SAMBA_PRINTER_PORT_NAME));
@@ -7390,7 +7390,7 @@ static WERROR spoolss_addprinterex_level_2( pipes_struct *p, const UNISTR2 *uni_
        int     snum;
        WERROR err = WERR_OK;
 
-       if ((printer = (NT_PRINTER_INFO_LEVEL *)malloc(sizeof(NT_PRINTER_INFO_LEVEL))) == NULL) {
+       if ((printer = SMB_MALLOC_P(NT_PRINTER_INFO_LEVEL)) == NULL) {
                DEBUG(0,("spoolss_addprinterex_level_2: malloc fail.\n"));
                return WERR_NOMEM;
        }
@@ -7719,7 +7719,7 @@ static WERROR getprinterdriverdir_level_1(UNISTR2 *name, UNISTR2 *uni_environmen
        if (!(short_archi = get_short_archi(long_archi)))
                return WERR_INVALID_ENVIRONMENT;
 
-       if((info=(DRIVER_DIRECTORY_1 *)malloc(sizeof(DRIVER_DIRECTORY_1))) == NULL)
+       if((info=SMB_MALLOC_P(DRIVER_DIRECTORY_1)) == NULL)
                return WERR_NOMEM;
 
        slprintf(path, sizeof(path)-1, "\\\\%s\\print$\\%s", pservername, short_archi);
@@ -7887,7 +7887,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
 
                *out_max_value_len=(in_value_len/sizeof(uint16));
                
-               if((*out_value=(uint16 *)talloc_zero(p->mem_ctx, in_value_len*sizeof(uint8))) == NULL)
+               if((*out_value=(uint16 *)TALLOC_ZERO(p->mem_ctx, in_value_len*sizeof(uint8))) == NULL)
                {
                        result = WERR_NOMEM;
                        goto done;
@@ -7902,7 +7902,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
                
                /* only allocate when given a non-zero data_len */
                
-               if ( in_data_len && ((*data_out=(uint8 *)talloc_zero(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) )
+               if ( in_data_len && ((*data_out=(uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) )
                {
                        result = WERR_NOMEM;
                        goto done;
@@ -7923,7 +7923,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
        
                /* name */
                *out_max_value_len=(in_value_len/sizeof(uint16));
-               if ( (*out_value = (uint16 *)talloc_zero(p->mem_ctx, in_value_len*sizeof(uint8))) == NULL ) 
+               if ( (*out_value = (uint16 *)TALLOC_ZERO(p->mem_ctx, in_value_len*sizeof(uint8))) == NULL ) 
                {
                        result = WERR_NOMEM;
                        goto done;
@@ -7938,7 +7938,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
                /* data - counted in bytes */
 
                *out_max_data_len = in_data_len;
-               if ( (*data_out = (uint8 *)talloc_zero(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) 
+               if ( (*data_out = (uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) 
                {
                        result = WERR_NOMEM;
                        goto done;
@@ -8323,7 +8323,7 @@ static WERROR enumprintprocessors_level_1(NEW_BUFFER *buffer, uint32 offered, ui
 {
        PRINTPROCESSOR_1 *info_1=NULL;
        
-       if((info_1 = (PRINTPROCESSOR_1 *)malloc(sizeof(PRINTPROCESSOR_1))) == NULL)
+       if((info_1 = SMB_MALLOC_P(PRINTPROCESSOR_1)) == NULL)
                return WERR_NOMEM;
 
        (*returned) = 0x1;
@@ -8390,7 +8390,7 @@ static WERROR enumprintprocdatatypes_level_1(NEW_BUFFER *buffer, uint32 offered,
 {
        PRINTPROCDATATYPE_1 *info_1=NULL;
        
-       if((info_1 = (PRINTPROCDATATYPE_1 *)malloc(sizeof(PRINTPROCDATATYPE_1))) == NULL)
+       if((info_1 = SMB_MALLOC_P(PRINTPROCDATATYPE_1)) == NULL)
                return WERR_NOMEM;
 
        (*returned) = 0x1;
@@ -8450,7 +8450,7 @@ static WERROR enumprintmonitors_level_1(NEW_BUFFER *buffer, uint32 offered, uint
 {
        PRINTMONITOR_1 *info_1=NULL;
        
-       if((info_1 = (PRINTMONITOR_1 *)malloc(sizeof(PRINTMONITOR_1))) == NULL)
+       if((info_1 = SMB_MALLOC_P(PRINTMONITOR_1)) == NULL)
                return WERR_NOMEM;
 
        (*returned) = 0x1;
@@ -8482,7 +8482,7 @@ static WERROR enumprintmonitors_level_2(NEW_BUFFER *buffer, uint32 offered, uint
 {
        PRINTMONITOR_2 *info_2=NULL;
        
-       if((info_2 = (PRINTMONITOR_2 *)malloc(sizeof(PRINTMONITOR_2))) == NULL)
+       if((info_2 = SMB_MALLOC_P(PRINTMONITOR_2)) == NULL)
                return WERR_NOMEM;
 
        (*returned) = 0x1;
@@ -8557,7 +8557,7 @@ static WERROR getjob_level_1(print_queue_struct **queue, int count, int snum,
        BOOL found=False;
        JOB_INFO_1 *info_1=NULL;
 
-       info_1=(JOB_INFO_1 *)malloc(sizeof(JOB_INFO_1));
+       info_1=SMB_MALLOC_P(JOB_INFO_1);
 
        if (info_1 == NULL) {
                return WERR_NOMEM;
@@ -8608,7 +8608,7 @@ static WERROR getjob_level_2(print_queue_struct **queue, int count, int snum,
        DEVICEMODE      *devmode = NULL;
        NT_DEVICEMODE   *nt_devmode = NULL;
 
-       info_2=(JOB_INFO_2 *)malloc(sizeof(JOB_INFO_2));
+       info_2=SMB_MALLOC_P(JOB_INFO_2);
 
        ZERO_STRUCTP(info_2);
 
@@ -8640,7 +8640,7 @@ static WERROR getjob_level_2(print_queue_struct **queue, int count, int snum,
        if ( !(nt_devmode=print_job_devmode( lp_const_servicename(snum), jobid )) )
                devmode = construct_dev_mode(snum);
        else {
-               if ((devmode = (DEVICEMODE *)malloc(sizeof(DEVICEMODE))) != NULL) {
+               if ((devmode = SMB_MALLOC_P(DEVICEMODE)) != NULL) {
                        ZERO_STRUCTP( devmode );
                        convert_nt_devicemode( devmode, nt_devmode );
                }
@@ -8818,7 +8818,7 @@ done:
                
                if ( *out_size ) 
                {
-                       if( (*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL ) {
+                       if( (*data=(uint8 *)TALLOC_ZERO(p->mem_ctx, *out_size*sizeof(uint8))) == NULL ) {
                                status = WERR_NOMEM;
                                goto done;
                        }
@@ -9177,7 +9177,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
        num_entries = regval_ctr_numvals( &p_data->keys[key_index].values );
        if ( num_entries )
        {
-               if ( (enum_values=talloc(p->mem_ctx, num_entries*sizeof(PRINTER_ENUM_VALUES))) == NULL )
+               if ( (enum_values=TALLOC_ARRAY(p->mem_ctx, PRINTER_ENUM_VALUES, num_entries)) == NULL )
                {
                        DEBUG(0,("_spoolss_enumprinterdataex: talloc() failed to allocate memory for [%lu] bytes!\n",
                                (unsigned long)num_entries*sizeof(PRINTER_ENUM_VALUES)));
@@ -9209,7 +9209,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
                
                data_len = regval_size( val );
                if ( data_len ) {
-                       if ( !(enum_values[i].data = talloc_memdup(p->mem_ctx, regval_data_p(val), data_len)) ) 
+                       if ( !(enum_values[i].data = TALLOC_MEMDUP(p->mem_ctx, regval_data_p(val), data_len)) ) 
                        {
                                DEBUG(0,("talloc_memdup failed to allocate memory [data_len=%d] for data!\n", 
                                        data_len ));
@@ -9272,7 +9272,7 @@ static WERROR getprintprocessordirectory_level_1(UNISTR2 *name,
        if (!get_short_archi(long_archi))
                return WERR_INVALID_ENVIRONMENT;
 
-       if((info=(PRINTPROCESSOR_DIRECTORY_1 *)malloc(sizeof(PRINTPROCESSOR_DIRECTORY_1))) == NULL)
+       if((info=SMB_MALLOC_P(PRINTPROCESSOR_DIRECTORY_1)) == NULL)
                return WERR_NOMEM;
 
        pstrcpy(path, "C:\\WINNT\\System32\\spool\\PRTPROCS\\W32X86");
index 9837ea2a97ee5df6cd1c1218fe5f7c2e384e33d2..af4c94800a5e3d711ade294ac3aab42fdd895814 100644 (file)
@@ -522,10 +522,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
        switch (info_level) {
        case 0:
        {
-               SRV_SHARE_INFO_0 *info0;
+               SRV_SHARE_INFO_0 *info0 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_0, num_entries);
                int i = 0;
 
-               info0 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_0));
+               if (!info0) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -540,10 +542,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 1:
        {
-               SRV_SHARE_INFO_1 *info1;
+               SRV_SHARE_INFO_1 *info1 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1, num_entries);
                int i = 0;
 
-               info1 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1));
+               if (!info1) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -557,10 +561,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 2:
        {
-               SRV_SHARE_INFO_2 *info2;
+               SRV_SHARE_INFO_2 *info2 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_2, num_entries);
                int i = 0;
 
-               info2 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_2));
+               if (!info2) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -574,10 +580,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 501:
        {
-               SRV_SHARE_INFO_501 *info501;
+               SRV_SHARE_INFO_501 *info501 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_501, num_entries);
                int i = 0;
        
-               info501 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_501));
+               if (!info501) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -591,10 +599,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 502:
        {
-               SRV_SHARE_INFO_502 *info502;
+               SRV_SHARE_INFO_502 *info502 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_502, num_entries);
                int i = 0;
 
-               info502 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_502));
+               if (!info502) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -610,10 +620,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
        
        case 1004:
        {
-               SRV_SHARE_INFO_1004 *info1004;
+               SRV_SHARE_INFO_1004 *info1004 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1004, num_entries);
                int i = 0;
 
-               info1004 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1004));
+               if (!info1004) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -627,10 +639,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 1005:
        {
-               SRV_SHARE_INFO_1005 *info1005;
+               SRV_SHARE_INFO_1005 *info1005 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1005, num_entries);
                int i = 0;
 
-               info1005 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1005));
+               if (!info1005) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -644,10 +658,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 1006:
        {
-               SRV_SHARE_INFO_1006 *info1006;
+               SRV_SHARE_INFO_1006 *info1006 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1006, num_entries);
                int i = 0;
 
-               info1006 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1006));
+               if (!info1006) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -661,10 +677,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 1007:
        {
-               SRV_SHARE_INFO_1007 *info1007;
+               SRV_SHARE_INFO_1007 *info1007 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1007, num_entries);
                int i = 0;
 
-               info1007 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1007));
+               if (!info1007) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -678,10 +696,12 @@ static BOOL init_srv_share_info_ctr(pipes_struct *p, SRV_SHARE_INFO_CTR *ctr,
 
        case 1501:
        {
-               SRV_SHARE_INFO_1501 *info1501;
+               SRV_SHARE_INFO_1501 *info1501 = TALLOC_ARRAY(ctx, SRV_SHARE_INFO_1501, num_entries);
                int i = 0;
 
-               info1501 = talloc(ctx, num_entries * sizeof(SRV_SHARE_INFO_1501));
+               if (!info1501) {
+                       return False;
+               }
 
                for (snum = *resume_hnd; snum < num_services; snum++) {
                        if (lp_browseable(snum) && lp_snum_ok(snum) && (all_shares || !is_hidden_share(snum)) ) {
@@ -1132,8 +1152,7 @@ static WERROR init_srv_file_info_ctr(pipes_struct *p, SRV_FILE_INFO_CTR *ctr,
                int i;
                if (*total_entries > 0) {
                        ctr->ptr_entries = 1;
-                       ctr->file.info3 = talloc(ctx, ctr->num_entries * 
-                                                sizeof(SRV_FILE_INFO_3));
+                       ctr->file.info3 = TALLOC_ARRAY(ctx, SRV_FILE_INFO_3, ctr->num_entries);
                }
                for (i=0 ;i<ctr->num_entries;i++) {
                        init_srv_file_info3(&ctr->file.info3[i].info_3, i+*resume_hnd, 0x35, 0, "\\PIPE\\samr", "dummy user");
@@ -1184,7 +1203,7 @@ net server get info
 WERROR _srv_net_srv_get_info(pipes_struct *p, SRV_Q_NET_SRV_GET_INFO *q_u, SRV_R_NET_SRV_GET_INFO *r_u)
 {
        WERROR status = WERR_OK;
-       SRV_INFO_CTR *ctr = (SRV_INFO_CTR *)talloc(p->mem_ctx, sizeof(SRV_INFO_CTR));
+       SRV_INFO_CTR *ctr = TALLOC_P(p->mem_ctx, SRV_INFO_CTR);
 
        if (!ctr)
                return WERR_NOMEM;
@@ -1287,7 +1306,7 @@ WERROR _srv_net_conn_enum(pipes_struct *p, SRV_Q_NET_CONN_ENUM *q_u, SRV_R_NET_C
 {
        DEBUG(5,("srv_net_conn_enum: %d\n", __LINE__));
 
-       r_u->ctr = (SRV_CONN_INFO_CTR *)talloc(p->mem_ctx, sizeof(SRV_CONN_INFO_CTR));
+       r_u->ctr = TALLOC_P(p->mem_ctx, SRV_CONN_INFO_CTR);
        if (!r_u->ctr)
                return WERR_NOMEM;
 
@@ -1312,7 +1331,7 @@ WERROR _srv_net_sess_enum(pipes_struct *p, SRV_Q_NET_SESS_ENUM *q_u, SRV_R_NET_S
 {
        DEBUG(5,("_srv_net_sess_enum: %d\n", __LINE__));
 
-       r_u->ctr = (SRV_SESS_INFO_CTR *)talloc(p->mem_ctx, sizeof(SRV_SESS_INFO_CTR));
+       r_u->ctr = TALLOC_P(p->mem_ctx, SRV_SESS_INFO_CTR);
        if (!r_u->ctr)
                return WERR_NOMEM;
 
@@ -1795,7 +1814,7 @@ WERROR _srv_net_remote_tod(pipes_struct *p, SRV_Q_NET_REMOTE_TOD *q_u, SRV_R_NET
        struct tm *t;
        time_t unixdate = time(NULL);
 
-       tod = (TIME_OF_DAY_INFO *)talloc(p->mem_ctx, sizeof(TIME_OF_DAY_INFO));
+       tod = TALLOC_P(p->mem_ctx, TIME_OF_DAY_INFO);
        if (!tod)
                return WERR_NOMEM;
 
@@ -2114,16 +2133,8 @@ WERROR _srv_net_disk_enum(pipes_struct *p, SRV_Q_NET_DISK_ENUM *q_u, SRV_R_NET_D
 
        r_u->disk_enum_ctr.unknown = 0; 
 
-       {
-               DISK_INFO *dinfo;
-
-               int dinfo_size = MAX_SERVER_DISK_ENTRIES * sizeof(*dinfo);
-         
-               if(!(dinfo =  talloc(ctx, dinfo_size))) {
-                       return WERR_NOMEM;
-               }
-
-               r_u->disk_enum_ctr.disk_info = dinfo;
+       if(!(r_u->disk_enum_ctr.disk_info =  TALLOC_ARRAY(ctx, DISK_INFO, MAX_SERVER_DISK_ENTRIES))) {
+               return WERR_NOMEM;
        }
 
        r_u->disk_enum_ctr.disk_info_ptr = r_u->disk_enum_ctr.disk_info ? 1 : 0;
index 2689d89972343a74f16a66e15381478486933069..802e7673a40b0d04ce1700fcc63c59cdcde8c0bf 100644 (file)
@@ -90,7 +90,7 @@ NTSTATUS nt_token_to_group_list(TALLOC_CTX *mem_ctx, const DOM_SID *domain_sid,
        DOM_GID *gids;
        int i;
 
-       gids = (DOM_GID *)talloc(mem_ctx, sizeof(*gids) * nt_token->num_sids);
+       gids = TALLOC_ARRAY(mem_ctx, DOM_GID, nt_token->num_sids);
 
        if (!gids) {
                return NT_STATUS_NO_MEMORY;
index 25fa029237da8409e25eebf4d54831be32b6215f..6528e63225171728c5bdf2337810038bb16ce99a 100644 (file)
@@ -65,7 +65,7 @@ NTSTATUS _wks_query_info(pipes_struct *p, WKS_Q_QUERY_INFO *q_u, WKS_R_QUERY_INF
 
        DEBUG(5,("_wks_query_info: %d\n", __LINE__));
 
-       wks100 = (WKS_INFO_100 *)talloc_zero(p->mem_ctx, sizeof(WKS_INFO_100));
+       wks100 = TALLOC_ZERO_P(p->mem_ctx, WKS_INFO_100);
 
        if (!wks100)
                return NT_STATUS_NO_MEMORY;
index fa4e6916633a20783576e5f28f709094ec9eb62f..fce8e4c7b8f9a3257c84b6fbde86fea1508f4cc0 100644 (file)
@@ -60,7 +60,7 @@ static NTSTATUS cmd_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        size = atoi(argv[1]);
-       in_data = malloc(size);
+       in_data = SMB_MALLOC(size);
 
        for (i = 0; i < size; i++)
                in_data[i] = i & 0xff;
@@ -129,7 +129,7 @@ static NTSTATUS cmd_echo_sink_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        size = atoi(argv[1]);
-       in_data = malloc(size);
+       in_data = SMB_MALLOC(size);
 
        for (i = 0; i < size; i++)
                in_data[i] = i & 0xff;
index d9afde465dac8ccbb1ae16f5ec4e2d6b6a02b23c..2b8279ccd2e8c73373279517e0f5b3d1b27f2767 100644 (file)
@@ -207,7 +207,7 @@ static NTSTATUS cmd_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Convert arguments to sids */
 
-       sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) * (argc - 1));
+       sids = TALLOC_ARRAY(mem_ctx, DOM_SID, argc - 1);
 
        if (!sids) {
                printf("could not allocate memory for %d sids\n", argc - 1);
index 6ab08e1991b519cd5947acf7aa95a8b44cc76143..3bd55aff0656a6134fdcd2e025679dda579b2782 100644 (file)
@@ -1238,7 +1238,7 @@ static NTSTATUS cmd_samr_lookup_names(struct cli_state *cli,
        /* Look up names */
 
        num_names = argc - 2;
-       names = (const char **)talloc(mem_ctx, sizeof(char *) * num_names);
+       names = TALLOC_ARRAY(mem_ctx, const char *, num_names);
 
        for (i = 0; i < argc - 2; i++)
                names[i] = argv[i + 2];
@@ -1296,7 +1296,7 @@ static NTSTATUS cmd_samr_lookup_rids(struct cli_state *cli,
        /* Look up rids */
 
        num_rids = argc - 1;
-       rids = (uint32 *)talloc(mem_ctx, sizeof(uint32) * num_rids);
+       rids = TALLOC_ARRAY(mem_ctx, uint32, num_rids);
 
        for (i = 0; i < argc - 1; i++)
                 sscanf(argv[i + 1], "%i", &rids[i]);
index 4c4704c4ae69692194e1d15feee499bd14ae5d38..0b0d015238e97304c7653c49dc15960cccee4aa0 100644 (file)
@@ -1333,7 +1333,7 @@ static BOOL init_drv_info_3_members (
        /* allocate the space; add one extra slot for a terminating NULL.
           Each filename is NULL terminated and the end contains a double
           NULL */
-       if ((info->dependentfiles=(uint16*)talloc(mem_ctx, (len+1)*sizeof(uint16))) == NULL)
+       if ((info->dependentfiles=TALLOC_ARRAY(mem_ctx, uint16, len+1)) == NULL)
        {
                DEBUG(0,("init_drv_info_3_members: Unable to malloc memory for dependenfiles\n"));
                return False;
@@ -2035,7 +2035,7 @@ static WERROR cmd_spoolss_setprinterdata(struct cli_state *cli,
        fstrcpy(value.valuename, argv[2]);
        value.type = REG_SZ;
        value.size = data.uni_str_len * 2;
-       value.data_p = talloc_memdup(mem_ctx, data.buffer, value.size);
+       value.data_p = TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
 
        result = cli_spoolss_setprinterdata(cli, mem_ctx, &pol, &value);
                
@@ -2417,8 +2417,7 @@ static WERROR cmd_spoolss_rffpcnex(struct cli_state *cli,
        option.option_type_ptr = 1;
        option.count = option.ctr.count = 2;
 
-       option.ctr.type = (SPOOL_NOTIFY_OPTION_TYPE *)talloc(
-               mem_ctx, sizeof(SPOOL_NOTIFY_OPTION_TYPE) * 2);
+       option.ctr.type = TALLOC_ARRAY(mem_ctx, SPOOL_NOTIFY_OPTION_TYPE, 2);
 
        ZERO_STRUCT(option.ctr.type[0]);
        option.ctr.type[0].type = PRINTER_NOTIFY_TYPE;
index bac11f7435f09387ddc2abeea532bb6678b1d7f3..e003b86e67bc085be2ee0406f7cc99ceb5388d8f 100644 (file)
@@ -59,10 +59,10 @@ static char **completion_fn(const char *text, int start, int end)
        if (!commands) 
                return NULL;
 
-       matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+       matches = SMB_MALLOC_ARRAY(char *, MAX_COMPLETIONS);
        if (!matches) return NULL;
 
-       matches[count++] = strdup(text);
+       matches[count++] = SMB_STRDUP(text);
        if (!matches[0]) return NULL;
 
        while (commands && count < MAX_COMPLETIONS-1) 
@@ -78,7 +78,7 @@ static char **completion_fn(const char *text, int start, int end)
                       ( commands->cmd_set[i].returntype == RPC_RTYPE_WERROR &&
                         commands->cmd_set[i].wfn)))
                        {
-                               matches[count] = strdup(commands->cmd_set[i].name);
+                               matches[count] = SMB_STRDUP(commands->cmd_set[i].name);
                                if (!matches[count]) 
                                        return NULL;
                                count++;
@@ -91,7 +91,7 @@ static char **completion_fn(const char *text, int start, int end)
 
        if (count == 2) {
                SAFE_FREE(matches[0]);
-               matches[0] = strdup(matches[1]);
+               matches[0] = SMB_STRDUP(matches[1]);
        }
        matches[count] = NULL;
        return matches;
@@ -485,7 +485,7 @@ static void add_command_set(struct cmd_set *cmd_set)
 {
        struct cmd_list *entry;
 
-       if (!(entry = (struct cmd_list *)malloc(sizeof(struct cmd_list)))) {
+       if (!(entry = SMB_MALLOC_P(struct cmd_list))) {
                DEBUG(0, ("out of memory\n"));
                return;
        }
index 3abfb0ae9f1573ed3a0316ce34ad7c482df75d12..d18157643b1e0a67b9efbcbfaccab785bb2a4673 100644 (file)
@@ -83,7 +83,7 @@ NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods
                return NT_STATUS_OBJECT_NAME_COLLISION;
        }
 
-       entry = smb_xmalloc(sizeof(struct idmap_function_entry));
+       entry = SMB_XMALLOC_P(struct idmap_function_entry);
        entry->name = smb_xstrdup(name);
        entry->methods = methods;
 
index 8ab8ec8477073958462bc0670d87caf3a5c13aa4..e89a6cf547cf585b36eb06e04ed62b844d20eb24 100644 (file)
@@ -487,7 +487,7 @@ static NTSTATUS db_idmap_init( char *params )
        BOOL tdb_is_new = False;
 
        /* use the old database if present */
-       tdbfile = strdup(lock_path("winbindd_idmap.tdb"));
+       tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
        if (!tdbfile) {
                DEBUG(0, ("idmap_init: out of memory!\n"));
                return NT_STATUS_NO_MEMORY;
index e143999a785d2d38c7f3dcafcdf01740a35df2ae..0e71174a2ee10af77f5d6ac18126f4b0413fe827 100644 (file)
@@ -106,12 +106,12 @@ BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout,
         * the expiration time here.
         */
 
-       if((blr = (blocking_lock_record *)malloc(sizeof(blocking_lock_record))) == NULL) {
+       if((blr = SMB_MALLOC_P(blocking_lock_record)) == NULL) {
                DEBUG(0,("push_blocking_lock_request: Malloc fail !\n" ));
                return False;
        }
 
-       if((blr->inbuf = (char *)malloc(length)) == NULL) {
+       if((blr->inbuf = (char *)SMB_MALLOC(length)) == NULL) {
                DEBUG(0,("push_blocking_lock_request: Malloc fail (2)!\n" ));
                SAFE_FREE(blr);
                return False;
index 34e19a3ca6bbecdd81ea552af1e55386b3b9dbb2..6b5942f7f66709898258d1179dbc7178981b71f3 100644 (file)
@@ -132,7 +132,7 @@ find_again:
                return NULL;
        }
 
-       if ((conn=(connection_struct *)talloc_zero(mem_ctx, sizeof(*conn)))==NULL) {
+       if ((conn=TALLOC_ZERO_P(mem_ctx, connection_struct))==NULL) {
                DEBUG(0,("talloc_zero() failed!\n"));
                return NULL;
        }
index 2bda42f76dc84c5097e6a4df23e7b5d7fce11d15..f721bf3ba8a53671f56c2f207f298287112921a5 100644 (file)
@@ -407,7 +407,7 @@ int dptr_create(connection_struct *conn, pstring path, BOOL old_handle, BOOL exp
        if (dptrs_open >= MAX_OPEN_DIRECTORIES)
                dptr_idleoldest();
 
-       dptr = (dptr_struct *)malloc(sizeof(dptr_struct));
+       dptr = SMB_MALLOC_P(dptr_struct);
        if(!dptr) {
                DEBUG(0,("malloc fail in dptr_create.\n"));
                return -1;
@@ -819,7 +819,7 @@ void *OpenDir(connection_struct *conn, const char *name, BOOL use_veto)
 
        if (!p)
                return(NULL);
-       dirp = (Dir *)malloc(sizeof(Dir));
+       dirp = SMB_MALLOC_P(Dir);
        if (!dirp) {
                DEBUG(0,("Out of memory in OpenDir\n"));
                SMB_VFS_CLOSEDIR(conn,p);
@@ -900,7 +900,7 @@ void *OpenDir(connection_struct *conn, const char *name, BOOL use_veto)
                if (used + l > dirp->mallocsize) {
                        int s = MAX(used+l,used+2000);
                        char *r;
-                       r = (char *)Realloc(dirp->data,s);
+                       r = (char *)SMB_REALLOC(dirp->data,s);
                        if (!r) {
                                DEBUG(0,("Out of memory in OpenDir\n"));
                                        break;
index fc874dc0867fde27af748f7a3fcebed9e81802ba..53aac1e0364773808863b7d2acf379ccc03ae2b2 100644 (file)
@@ -132,7 +132,7 @@ struct _FAKE_FILE_HANDLE *init_fake_file_handle(enum FAKE_FILE_TYPE type)
                                return NULL;    
                        }
 
-                       if ((fh =(FAKE_FILE_HANDLE *)talloc_zero(mem_ctx, sizeof(FAKE_FILE_HANDLE)))==NULL) {
+                       if ((fh =TALLOC_ZERO_P(mem_ctx, FAKE_FILE_HANDLE))==NULL) {
                                DEBUG(0,("talloc_zero() failed.\n"));
                                talloc_destroy(mem_ctx);
                                return NULL;
index 060fbb124dbdb60b24cef13392b0334056287002..a21bd69a36c634c232e9477c91e967f03618aa30 100644 (file)
@@ -676,7 +676,7 @@ static BOOL setup_write_cache(files_struct *fsp, SMB_OFF_T file_size)
        if(alloc_size == 0 || fsp->wcp)
                return False;
 
-       if((wcp = (write_cache *)malloc(sizeof(write_cache))) == NULL) {
+       if((wcp = SMB_MALLOC_P(write_cache)) == NULL) {
                DEBUG(0,("setup_write_cache: malloc fail.\n"));
                return False;
        }
@@ -685,7 +685,7 @@ static BOOL setup_write_cache(files_struct *fsp, SMB_OFF_T file_size)
        wcp->offset = 0;
        wcp->alloc_size = alloc_size;
        wcp->data_size = 0;
-       if((wcp->data = malloc(wcp->alloc_size)) == NULL) {
+       if((wcp->data = SMB_MALLOC(wcp->alloc_size)) == NULL) {
                DEBUG(0,("setup_write_cache: malloc fail for buffer size %u.\n",
                        (unsigned int)wcp->alloc_size ));
                SAFE_FREE(wcp);
index 580dc545452ad759b100fe604f9c539c4599faa0..ecf39c2b54f0d70536c7fb5df52079b6968846f6 100644 (file)
@@ -93,7 +93,7 @@ files_struct *file_new(connection_struct *conn)
                return NULL;
        }
 
-       fsp = (files_struct *)malloc(sizeof(*fsp));
+       fsp = SMB_MALLOC_P(files_struct);
        if (!fsp) {
                unix_ERR_class = ERRSRV;
                unix_ERR_code = ERRnofids;
index 35e670c9fa1a33bc0243447ef246b2c6f7d6a2eb..9fcd39b5002caa932a0ebbcd3163ec055fa6d42f 100644 (file)
@@ -165,7 +165,7 @@ void send_trans_reply(char *outbuf,
 static BOOL api_rpc_trans_reply(char *outbuf, smb_np_struct *p)
 {
        BOOL is_data_outstanding;
-       char *rdata = malloc(p->max_trans_reply);
+       char *rdata = SMB_MALLOC(p->max_trans_reply);
        int data_len;
 
        if(rdata == NULL) {
@@ -389,7 +389,7 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
                goto bad_param;
   
        if (tdscnt)  {
-               if((data = (char *)malloc(tdscnt)) == NULL) {
+               if((data = (char *)SMB_MALLOC(tdscnt)) == NULL) {
                        DEBUG(0,("reply_trans: data malloc fail for %u bytes !\n", tdscnt));
                        END_PROFILE(SMBtrans);
                        return(ERROR_DOS(ERRDOS,ERRnomem));
@@ -404,7 +404,7 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
        }
 
        if (tpscnt) {
-               if((params = (char *)malloc(tpscnt)) == NULL) {
+               if((params = (char *)SMB_MALLOC(tpscnt)) == NULL) {
                        DEBUG(0,("reply_trans: param malloc fail for %u bytes !\n", tpscnt));
                        SAFE_FREE(data);
                        END_PROFILE(SMBtrans);
@@ -421,7 +421,7 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
 
        if (suwcnt) {
                unsigned int i;
-               if((setup = (uint16 *)malloc(suwcnt*sizeof(uint16))) == NULL) {
+               if((setup = SMB_MALLOC_ARRAY(uint16,suwcnt)) == NULL) {
                        DEBUG(0,("reply_trans: setup malloc fail for %u bytes !\n", (unsigned int)(suwcnt * sizeof(uint16))));
                        SAFE_FREE(data);
                        SAFE_FREE(params);
index 7d5e0f5ad2a76771d1c90c4b27068b6652f705eb..4af11da78440917ceec5cfe311c5637a45bda69b 100644 (file)
@@ -753,7 +753,7 @@ static BOOL api_DosPrintQGetInfo(connection_struct *conn,
                 */
                *rdata_len = 0;
                *rparam_len = 6;
-               *rparam = REALLOC(*rparam,*rparam_len);
+               *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
                SSVALS(*rparam,0,ERRunknownlevel);
                SSVAL(*rparam,2,0);
                SSVAL(*rparam,4,0);
@@ -772,7 +772,7 @@ static BOOL api_DosPrintQGetInfo(connection_struct *conn,
        }
 
        if (mdrcnt > 0) {
-               *rdata = REALLOC(*rdata,mdrcnt);
+               *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
                desc.base = *rdata;
                desc.buflen = mdrcnt;
        } else {
@@ -781,7 +781,7 @@ static BOOL api_DosPrintQGetInfo(connection_struct *conn,
                 * init_package will return wrong size if buflen=0
                 */
                desc.buflen = getlen(desc.format);
-               desc.base = tmpdata = (char *) malloc (desc.buflen);
+               desc.base = tmpdata = (char *) SMB_MALLOC (desc.buflen);
        }
 
        if (init_package(&desc,1,count)) {
@@ -801,7 +801,7 @@ static BOOL api_DosPrintQGetInfo(connection_struct *conn,
  
        *rdata_len = desc.usedlen;
        *rparam_len = 6;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
        SSVALS(*rparam,0,desc.errcode);
        SSVAL(*rparam,2,0);
        SSVAL(*rparam,4,desc.neededlen);
@@ -849,7 +849,7 @@ static BOOL api_DosPrintQEnum(connection_struct *conn, uint16 vuid, char* param,
      */
     *rdata_len = 0;
     *rparam_len = 6;
-    *rparam = REALLOC(*rparam,*rparam_len);
+    *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
     SSVALS(*rparam,0,ERRunknownlevel);
     SSVAL(*rparam,2,0);
     SSVAL(*rparam,4,0);
@@ -861,17 +861,17 @@ static BOOL api_DosPrintQEnum(connection_struct *conn, uint16 vuid, char* param,
     if (lp_snum_ok(i) && lp_print_ok(i) && lp_browseable(i))
       queuecnt++;
   if (uLevel > 0) {
-    if((queue = (print_queue_struct**)malloc(queuecnt*sizeof(print_queue_struct*))) == NULL) {
+    if((queue = SMB_MALLOC_ARRAY(print_queue_struct*, queuecnt)) == NULL) {
       DEBUG(0,("api_DosPrintQEnum: malloc fail !\n"));
       return False;
     }
     memset(queue,0,queuecnt*sizeof(print_queue_struct*));
-    if((status = (print_status_struct*)malloc(queuecnt*sizeof(print_status_struct))) == NULL) {
+    if((status = SMB_MALLOC_ARRAY(print_status_struct,queuecnt)) == NULL) {
       DEBUG(0,("api_DosPrintQEnum: malloc fail !\n"));
       return False;
     }
     memset(status,0,queuecnt*sizeof(print_status_struct));
-    if((subcntarr = (int*)malloc(queuecnt*sizeof(int))) == NULL) {
+    if((subcntarr = SMB_MALLOC_ARRAY(int,queuecnt)) == NULL) {
       DEBUG(0,("api_DosPrintQEnum: malloc fail !\n"));
       return False;
     }
@@ -884,7 +884,7 @@ static BOOL api_DosPrintQEnum(connection_struct *conn, uint16 vuid, char* param,
        n++;
       }
   }
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
 
@@ -903,7 +903,7 @@ static BOOL api_DosPrintQEnum(connection_struct *conn, uint16 vuid, char* param,
  
   *rdata_len = desc.usedlen;
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -987,8 +987,7 @@ static int get_server_info(uint32 servertype,
       struct srv_info_struct *ts;
       
       alloced += 10;
-      ts = (struct srv_info_struct *)
-       Realloc(*servers,sizeof(**servers)*alloced);
+      ts = SMB_REALLOC_ARRAY(*servers,struct srv_info_struct, alloced);
       if (!ts) {
        DEBUG(0,("get_server_info: failed to enlarge servers info struct!\n"));
        return(0);
@@ -1234,7 +1233,7 @@ static BOOL api_RNetServerEnum(connection_struct *conn, uint16 vuid, char *param
   }
 
   *rdata_len = fixed_len + string_len;
-  *rdata = REALLOC(*rdata,*rdata_len);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
   memset(*rdata,'\0',*rdata_len);
   
   p2 = (*rdata) + fixed_len;   /* auxilliary data (strings) will go here */
@@ -1258,7 +1257,7 @@ static BOOL api_RNetServerEnum(connection_struct *conn, uint16 vuid, char *param
   }
   
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVAL(*rparam,0,(missed == 0 ? NERR_Success : ERRmoredata));
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,counted);
@@ -1295,7 +1294,7 @@ static BOOL api_RNetGroupGetUsers(connection_struct *conn, uint16 vuid, char *pa
   *rdata_len = 0;
   
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
   SSVAL(*rparam,0,0x08AC); /* informational warning message */
   SSVAL(*rparam,2,0);
@@ -1441,13 +1440,13 @@ static BOOL api_RNetShareGetInfo(connection_struct *conn,uint16 vuid, char *para
   if (!prefix_ok(str1,"zWrLh")) return False;
   if (!check_share_info(uLevel,str2)) return False;
  
-  *rdata = REALLOC(*rdata,mdrcnt);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   p = *rdata;
   *rdata_len = fill_share_info(conn,snum,uLevel,&p,&mdrcnt,0,0,0);
   if (*rdata_len < 0) return False;
  
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVAL(*rparam,0,NERR_Success);
   SSVAL(*rparam,2,0);          /* converter word */
   SSVAL(*rparam,4,*rdata_len);
@@ -1514,7 +1513,7 @@ static BOOL api_RNetShareEnum( connection_struct *conn,
     }
   }
   *rdata_len = fixed_len + string_len;
-  *rdata = REALLOC(*rdata,*rdata_len);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
   memset(*rdata,0,*rdata_len);
   
   p2 = (*rdata) + fixed_len;   /* auxiliary data (strings) will go here */
@@ -1537,7 +1536,7 @@ static BOOL api_RNetShareEnum( connection_struct *conn,
     }
   
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVAL(*rparam,0,missed ? ERRmoredata : NERR_Success);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,counted);
@@ -1623,7 +1622,7 @@ static BOOL api_RNetShareAdd(connection_struct *conn,uint16 vuid, char *param,ch
   } else return False;
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVAL(*rparam,0,NERR_Success);
   SSVAL(*rparam,2,0);          /* converter word */
   SSVAL(*rparam,4,*rdata_len);
@@ -1633,7 +1632,7 @@ static BOOL api_RNetShareAdd(connection_struct *conn,uint16 vuid, char *param,ch
 
  error_exit:
   *rparam_len = 4;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   *rdata_len = 0;
   SSVAL(*rparam,0,res);
   SSVAL(*rparam,2,0);
@@ -1688,7 +1687,7 @@ static BOOL api_RNetGroupEnum(connection_struct *conn,uint16 vuid, char *param,c
        DEBUG(10,("api_RNetGroupEnum:resume context: %d, client buffer size: %d\n", resume_context, cli_buf_size));
 
        *rdata_len = cli_buf_size;
-       *rdata = REALLOC(*rdata,*rdata_len);
+       *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
        p = *rdata;
 
@@ -1710,7 +1709,7 @@ static BOOL api_RNetGroupEnum(connection_struct *conn,uint16 vuid, char *param,c
        *rdata_len = PTR_DIFF(p,*rdata);
 
        *rparam_len = 8;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
        SSVAL(*rparam, 0, errflags);
        SSVAL(*rparam, 2, 0);           /* converter word */
@@ -1748,7 +1747,7 @@ static BOOL api_NetUserGetGroups(connection_struct *conn,uint16 vuid, char *para
        NTSTATUS result;
 
        *rparam_len = 8;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   
        /* check it's a supported varient */
        
@@ -1767,7 +1766,7 @@ static BOOL api_NetUserGetGroups(connection_struct *conn,uint16 vuid, char *para
                return False;
 
        *rdata_len = mdrcnt + 1024;
-       *rdata = REALLOC(*rdata,*rdata_len);
+       *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
        SSVAL(*rparam,0,NERR_Success);
        SSVAL(*rparam,2,0);             /* converter word */
@@ -1859,14 +1858,14 @@ static BOOL api_RNetUserEnum(connection_struct *conn,uint16 vuid, char *param,ch
        DEBUG(10,("api_RNetUserEnum:resume context: %d, client buffer size: %d\n", resume_context, cli_buf_size));
 
        *rparam_len = 8;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
        /* check it's a supported varient */
        if (strcmp("B21",str2) != 0)
                return False;
 
        *rdata_len = cli_buf_size;
-       *rdata = REALLOC(*rdata,*rdata_len);
+       *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
        p = *rdata;
 
@@ -1929,10 +1928,10 @@ static BOOL api_NetRemoteTOD(connection_struct *conn,uint16 vuid, char *param,ch
 {
   char *p;
   *rparam_len = 4;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
   *rdata_len = 21;
-  *rdata = REALLOC(*rdata,*rdata_len);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
   SSVAL(*rparam,0,NERR_Success);
   SSVAL(*rparam,2,0);          /* converter word */
@@ -1991,7 +1990,7 @@ static BOOL api_SetUserPassword(connection_struct *conn,uint16 vuid, char *param
        memcpy(pass2,p+16,16);
 
        *rparam_len = 4;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
        *rdata_len = 0;
 
@@ -2063,7 +2062,7 @@ static BOOL api_SamOEMChangePassword(connection_struct *conn,uint16 vuid, char *
        fstring user;
        char *p = param + 2;
        *rparam_len = 2;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
        *rdata_len = 0;
 
@@ -2130,7 +2129,7 @@ static BOOL api_RDosPrintJobDel(connection_struct *conn,uint16 vuid, char *param
                return(False);
 
        *rparam_len = 4;
-       *rparam = REALLOC(*rparam,*rparam_len); 
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);       
        *rdata_len = 0;
 
        if (!print_job_exists(sharename, jobid)) {
@@ -2193,7 +2192,7 @@ static BOOL api_WPrintQueueCtrl(connection_struct *conn,uint16 vuid, char *param
                return(False);
 
        *rparam_len = 4;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
        *rdata_len = 0;
 
        snum = print_queue_snum(QueueName);
@@ -2267,7 +2266,7 @@ static BOOL api_PrintJobInfo(connection_struct *conn,uint16 vuid,char *param,cha
        if(!rap_to_pjobid(SVAL(p,0), sharename, &jobid))
                return False;
        *rparam_len = 4;
-       *rparam = REALLOC(*rparam,*rparam_len);
+       *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
        if ( (snum = lp_servicenumber(sharename)) == -1 ) {
                DEBUG(0,("api_PrintJobInfo: unable to get service number from sharename [%s]\n",
@@ -2368,7 +2367,7 @@ static BOOL api_RNetServerGetInfo(connection_struct *conn,uint16 vuid, char *par
   }
 
   *rdata_len = mdrcnt;
-  *rdata = REALLOC(*rdata,*rdata_len);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
   p = *rdata;
   p2 = p + struct_len;
@@ -2417,7 +2416,7 @@ static BOOL api_RNetServerGetInfo(connection_struct *conn,uint16 vuid, char *par
   *rdata_len = PTR_DIFF(p2,*rdata);
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVAL(*rparam,0,NERR_Success);
   SSVAL(*rparam,2,0);          /* converter word */
   SSVAL(*rparam,4,*rdata_len);
@@ -2444,14 +2443,14 @@ static BOOL api_NetWkstaGetInfo(connection_struct *conn,uint16 vuid, char *param
   DEBUG(4,("NetWkstaGetInfo level %d\n",level));
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
   /* check it's a supported varient */
   if (!(level==10 && strcsequal(str1,"WrLh") && strcsequal(str2,"zzzBBzz")))
     return(False);
 
   *rdata_len = mdrcnt + 1024;
-  *rdata = REALLOC(*rdata,*rdata_len);
+  *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
   SSVAL(*rparam,0,NERR_Success);
   SSVAL(*rparam,2,0);          /* converter word */
@@ -2690,7 +2689,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param
               vuser->user.unix_name));
 
     *rparam_len = 6;
-    *rparam = REALLOC(*rparam,*rparam_len);
+    *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
     DEBUG(4,("RNetUserGetInfo level=%d\n", uLevel));
   
@@ -2709,7 +2708,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param
        if (strcmp(level_string,str2) != 0) return False;
 
        *rdata_len = mdrcnt + 1024;
-       *rdata = REALLOC(*rdata,*rdata_len);
+       *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len);
 
        SSVAL(*rparam,0,NERR_Success);
        SSVAL(*rparam,2,0);             /* converter word */
@@ -2856,7 +2855,7 @@ static BOOL api_WWkstaUserLogon(connection_struct *conn,uint16 vuid, char *param
   /* check it's a supported varient */
   if (strcmp(str1,"OOWb54WrLh") != 0) return False;
   if (uLevel != 1 || strcmp(str2,"WB21BWDWWDDDDDDDzzzD") != 0) return False;
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
   desc.subformat = NULL;
@@ -2895,7 +2894,7 @@ static BOOL api_WWkstaUserLogon(connection_struct *conn,uint16 vuid, char *param
 
   *rdata_len = desc.usedlen;
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,desc.neededlen);
@@ -2925,7 +2924,7 @@ static BOOL api_WAccessGetUserPerms(connection_struct *conn,uint16 vuid, char *p
   if (strcmp(str2,"") != 0) return False;
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,0);         /* errorcode */
   SSVAL(*rparam,2,0);          /* converter word */
   SSVAL(*rparam,4,0x7f);       /* permission flags */
@@ -2978,7 +2977,7 @@ static BOOL api_WPrintJobGetInfo(connection_struct *conn,uint16 vuid, char *para
   }
 
   if (mdrcnt > 0) {
-    *rdata = REALLOC(*rdata,mdrcnt);
+    *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
     desc.base = *rdata;
     desc.buflen = mdrcnt;
   } else {
@@ -2987,7 +2986,7 @@ static BOOL api_WPrintJobGetInfo(connection_struct *conn,uint16 vuid, char *para
      *  init_package will return wrong size if buflen=0
      */
     desc.buflen = getlen(desc.format);
-    desc.base = tmpdata = (char *)malloc ( desc.buflen );
+    desc.base = tmpdata = (char *)SMB_MALLOC( desc.buflen );
   }
 
   if (init_package(&desc,1,0)) {
@@ -3002,7 +3001,7 @@ static BOOL api_WPrintJobGetInfo(connection_struct *conn,uint16 vuid, char *para
   }
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,desc.neededlen);
@@ -3054,7 +3053,7 @@ static BOOL api_WPrintJobEnumerate(connection_struct *conn,uint16 vuid, char *pa
     return False;
 
   count = print_queue_status(snum,&queue,&status);
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
 
@@ -3069,7 +3068,7 @@ static BOOL api_WPrintJobEnumerate(connection_struct *conn,uint16 vuid, char *pa
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -3162,7 +3161,7 @@ static BOOL api_WPrintDestGetInfo(connection_struct *conn,uint16 vuid, char *par
   }
   else {
     if (mdrcnt > 0) {
-      *rdata = REALLOC(*rdata,mdrcnt);
+      *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
       desc.base = *rdata;
       desc.buflen = mdrcnt;
     } else {
@@ -3171,7 +3170,7 @@ static BOOL api_WPrintDestGetInfo(connection_struct *conn,uint16 vuid, char *par
        *  init_package will return wrong size if buflen=0
        */
       desc.buflen = getlen(desc.format);
-      desc.base = tmpdata = (char *)malloc ( desc.buflen );
+      desc.base = tmpdata = (char *)SMB_MALLOC( desc.buflen );
     }
     if (init_package(&desc,1,0)) {
       fill_printdest_info(conn,snum,uLevel,&desc);
@@ -3180,7 +3179,7 @@ static BOOL api_WPrintDestGetInfo(connection_struct *conn,uint16 vuid, char *par
   }
 
   *rparam_len = 6;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,desc.neededlen);
@@ -3219,7 +3218,7 @@ static BOOL api_WPrintDestEnum(connection_struct *conn,uint16 vuid, char *param,
     if (lp_snum_ok(i) && lp_print_ok(i) && lp_browseable(i))
       queuecnt++;
 
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
   if (init_package(&desc,queuecnt,0)) {    
@@ -3237,7 +3236,7 @@ static BOOL api_WPrintDestEnum(connection_struct *conn,uint16 vuid, char *param,
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -3269,7 +3268,7 @@ static BOOL api_WPrintDriverEnum(connection_struct *conn,uint16 vuid, char *para
   if (strcmp(str1,"WrLeh") != 0) return False;
   if (uLevel != 0 || strcmp(str2,"B41") != 0) return False;
 
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
   if (init_package(&desc,1,0)) {
@@ -3281,7 +3280,7 @@ static BOOL api_WPrintDriverEnum(connection_struct *conn,uint16 vuid, char *para
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -3313,7 +3312,7 @@ static BOOL api_WPrintQProcEnum(connection_struct *conn,uint16 vuid, char *param
   if (strcmp(str1,"WrLeh") != 0) return False;
   if (uLevel != 0 || strcmp(str2,"B13") != 0) return False;
 
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   desc.base = *rdata;
   desc.buflen = mdrcnt;
   desc.format = str2;
@@ -3326,7 +3325,7 @@ static BOOL api_WPrintQProcEnum(connection_struct *conn,uint16 vuid, char *param
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -3358,7 +3357,7 @@ static BOOL api_WPrintPortEnum(connection_struct *conn,uint16 vuid, char *param,
   if (strcmp(str1,"WrLeh") != 0) return False;
   if (uLevel != 0 || strcmp(str2,"B9") != 0) return False;
 
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   memset((char *)&desc,'\0',sizeof(desc));
   desc.base = *rdata;
   desc.buflen = mdrcnt;
@@ -3372,7 +3371,7 @@ static BOOL api_WPrintPortEnum(connection_struct *conn,uint16 vuid, char *param,
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0);
   SSVAL(*rparam,4,succnt);
@@ -3414,7 +3413,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn,uint16 vuid, char *param
 
   num_sessions = list_sessions(&session_list);
 
-  if (mdrcnt > 0) *rdata = REALLOC(*rdata,mdrcnt);
+  if (mdrcnt > 0) *rdata = SMB_REALLOC_LIMIT(*rdata,mdrcnt);
   memset((char *)&desc,'\0',sizeof(desc));
   desc.base = *rdata;
   desc.buflen = mdrcnt;
@@ -3438,7 +3437,7 @@ static BOOL api_RNetSessionEnum(connection_struct *conn,uint16 vuid, char *param
   *rdata_len = desc.usedlen;
 
   *rparam_len = 8;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
   SSVALS(*rparam,0,desc.errcode);
   SSVAL(*rparam,2,0); /* converter */
   SSVAL(*rparam,4,num_sessions); /* count */
@@ -3458,7 +3457,7 @@ static BOOL api_TooSmall(connection_struct *conn,uint16 vuid, char *param,char *
                         int *rdata_len,int *rparam_len)
 {
   *rparam_len = MIN(*rparam_len,mprcnt);
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
   *rdata_len = 0;
 
@@ -3480,7 +3479,7 @@ static BOOL api_Unsupported(connection_struct *conn,uint16 vuid, char *param,cha
                            int *rdata_len,int *rparam_len)
 {
   *rparam_len = 4;
-  *rparam = REALLOC(*rparam,*rparam_len);
+  *rparam = SMB_REALLOC_LIMIT(*rparam,*rparam_len);
 
   *rdata_len = 0;
 
@@ -3587,11 +3586,11 @@ int api_reply(connection_struct *conn,uint16 vuid,char *outbuf,char *data,char *
                  return ERROR_NT(NT_STATUS_ACCESS_DENIED);
   }
 
-  rdata = (char *)malloc(1024);
+  rdata = (char *)SMB_MALLOC(1024);
   if (rdata)
     memset(rdata,'\0',1024);
 
-  rparam = (char *)malloc(1024);
+  rparam = (char *)SMB_MALLOC(1024);
   if (rparam)
     memset(rparam,'\0',1024);
 
index 26ddf1b3a3d4b757eddd5aac8e994b2193d8efc0..0067023e610eb2b956a440791710e83a37c75d28 100644 (file)
@@ -476,7 +476,7 @@ static BOOL check_cache( char *s, size_t maxlen )
        if(data_val.dptr == NULL || data_val.dsize == 0) {
                ext_start = strrchr( s, '.' );
                if( ext_start ) {
-                       if((saved_ext = strdup(ext_start)) == NULL)
+                       if((saved_ext = SMB_STRDUP(ext_start)) == NULL)
                                return False;
 
                        *ext_start = '\0';
@@ -624,7 +624,7 @@ static void name_map(char *OutName, BOOL need83, BOOL cache83, int default_case)
 
                /* mangle it into 8.3 */
                if (cache83)
-                       tmp = strdup(OutName);
+                       tmp = SMB_STRDUP(OutName);
 
                to_8_3(OutName, default_case);
 
index c6ad1215b0990549ef3f28af6a09805b75027a46..4896cfb17be86505531d1b2e3302075846d5c85e 100644 (file)
@@ -153,13 +153,19 @@ static u32 mangle_hash(const char *key, unsigned int length)
  */
 static BOOL cache_init(void)
 {
-       if (prefix_cache) return True;
+       if (prefix_cache) {
+               return True;
+       }
 
-       prefix_cache = calloc(MANGLE_CACHE_SIZE, sizeof(char *));
-       if (!prefix_cache) return False;
+       prefix_cache = SMB_CALLOC_ARRAY(char *,MANGLE_CACHE_SIZE);
+       if (!prefix_cache) {
+               return False;
+       }
 
-       prefix_cache_hashes = calloc(MANGLE_CACHE_SIZE, sizeof(u32));
-       if (!prefix_cache_hashes) return False;
+       prefix_cache_hashes = SMB_CALLOC_ARRAY(u32, MANGLE_CACHE_SIZE);
+       if (!prefix_cache_hashes) {
+               return False;
+       }
 
        return True;
 }
@@ -175,7 +181,7 @@ static void cache_insert(const char *prefix, int length, u32 hash)
                free(prefix_cache[i]);
        }
 
-       prefix_cache[i] = strndup(prefix, length);
+       prefix_cache[i] = SMB_STRNDUP(prefix, length);
        prefix_cache_hashes[i] = hash;
 }
 
index 6c132897f982c1ec0b52b124eb2783736a5a72db..b5ae7486d381918f0e746ae89d8a21b98a5ea49d 100644 (file)
@@ -189,7 +189,7 @@ static BOOL parse_symlink(char* buf,struct referral** preflist,
 
        DEBUG(10,("parse_symlink: count=%d\n", count));
 
-       reflist = *preflist = (struct referral*) malloc(count * sizeof(struct referral));
+       reflist = *preflist = SMB_MALLOC_ARRAY(struct referral, count);
        if(reflist == NULL) {
                DEBUG(0,("parse_symlink: Malloc failed!\n"));
                return False;
@@ -417,7 +417,7 @@ static BOOL self_ref(char *pathname, struct junction_map *jucn,
                *self_referralp = True;
 
        jucn->referral_count = 1;
-       if((ref = (struct referral*) malloc(sizeof(struct referral))) == NULL) {
+       if((ref = SMB_MALLOC_P(struct referral)) == NULL) {
                DEBUG(0,("self_ref: malloc failed for referral\n"));
                return False;
        }
@@ -503,7 +503,7 @@ BOOL get_referred_path(char *pathname, struct junction_map *jucn,
                                        self_referralp);
 
                jucn->referral_count = 1;
-               if ((ref = (struct referral*) malloc(sizeof(struct referral))) == NULL) {
+               if ((ref = SMB_MALLOC_P(struct referral)) == NULL) {
                        DEBUG(0, ("malloc failed for referral\n"));
                        goto out;
                }
@@ -595,7 +595,7 @@ static int setup_ver2_dfs_referral(char* pathname, char** ppdata,
        /* add the unexplained 0x16 bytes */
        reply_size += 0x16;
 
-       pdata = Realloc(pdata,reply_size);
+       pdata = SMB_REALLOC(pdata,reply_size);
        if(pdata == NULL) {
                DEBUG(0,("malloc failed for Realloc!\n"));
                return -1;
@@ -676,7 +676,7 @@ static int setup_ver3_dfs_referral(char* pathname, char** ppdata,
                reply_size += (strlen(junction->referral_list[i].alternate_path)+1)*2;
        }
 
-       pdata = Realloc(pdata,reply_size);
+       pdata = SMB_REALLOC(pdata,reply_size);
        if(pdata == NULL) {
                DEBUG(0,("version3 referral setup: malloc failed for Realloc!\n"));
                return -1;
@@ -962,8 +962,7 @@ static BOOL form_junctions(int snum, struct junction_map* jucn, int* jn_count)
        jucn[cnt].volume_name[0] = '\0';
        jucn[cnt].referral_count = 1;
 
-       ref = jucn[cnt].referral_list
-               = (struct referral*) malloc(sizeof(struct referral));
+       ref = jucn[cnt].referral_list = SMB_MALLOC_P(struct referral);
        if (jucn[cnt].referral_list == NULL) {
                DEBUG(0, ("Malloc failed!\n"));
                goto out;
index 9adf827c794d79d43fda49c8ea957d2febfec2d5..92b86f350c756f8039057c54d02f80ce5a143fc0 100644 (file)
@@ -178,7 +178,7 @@ BOOL change_notify_set(char *inbuf, files_struct *fsp, connection_struct *conn,
 {
        struct change_notify *cnbp;
 
-       if((cnbp = (struct change_notify *)malloc(sizeof(*cnbp))) == NULL) {
+       if((cnbp = SMB_MALLOC_P(struct change_notify)) == NULL) {
                DEBUG(0,("change_notify_set: malloc fail !\n" ));
                return -1;
        }
index 555f32d773fd2301fca256fe696537fc3ca036d9..8fbf858008b94763705356bcebbef799282691a1 100644 (file)
@@ -199,14 +199,14 @@ int vfs_get_user_ntquota_list(files_struct *fsp, SMB_NTQUOTA_LIST **qt_list)
                DEBUG(15,("quota entry for id[%s] path[%s]\n",
                        sid_string_static(&sid),fsp->conn->connectpath));
 
-               if ((tmp_list_ent=(SMB_NTQUOTA_LIST *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_LIST)))==NULL) {
+               if ((tmp_list_ent=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_LIST))==NULL) {
                        DEBUG(0,("talloc_zero() failed\n"));
                        *qt_list = NULL;
                        talloc_destroy(mem_ctx);
                        return (-1);
                }
 
-               if ((tmp_list_ent->quotas=(SMB_NTQUOTA_STRUCT *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_STRUCT)))==NULL) {
+               if ((tmp_list_ent->quotas=TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_STRUCT))==NULL) {
                        DEBUG(0,("talloc_zero() failed\n"));
                        *qt_list = NULL;
                        talloc_destroy(mem_ctx);
@@ -232,7 +232,7 @@ void *init_quota_handle(TALLOC_CTX *mem_ctx)
        if (!mem_ctx)
                return False;
 
-       qt_handle = (SMB_NTQUOTA_HANDLE *)talloc_zero(mem_ctx,sizeof(SMB_NTQUOTA_HANDLE));
+       qt_handle = TALLOC_ZERO_P(mem_ctx,SMB_NTQUOTA_HANDLE);
        if (qt_handle==NULL) {
                DEBUG(0,("talloc_zero() failed\n"));
                return NULL;
index 42953a1b7a1751c82ab4e973aa72ddd1a3c4945d..2395d0d8db58e5ec52f26be0143c01f23df9389e 100644 (file)
@@ -58,11 +58,12 @@ static char *nttrans_realloc(char **ptr, size_t size)
        if (ptr==NULL)
                smb_panic("nttrans_realloc() called with NULL ptr\n");
                
-       tptr = Realloc_zero(*ptr, size);
+       tptr = SMB_REALLOC(*ptr, size);
        if(tptr == NULL) {
                *ptr = NULL;
                return NULL;
        }
+       memset(tptr,'\0',size);
 
        *ptr = tptr;
 
@@ -2139,7 +2140,7 @@ static int call_nt_transact_ioctl(connection_struct *conn, char *inbuf, char *ou
                        return ERROR_NT(NT_STATUS_NO_MEMORY);
                }
 
-               shadow_data = (SHADOW_COPY_DATA *)talloc_zero(shadow_mem_ctx,sizeof(SHADOW_COPY_DATA));
+               shadow_data = TALLOC_ZERO_P(shadow_mem_ctx,SHADOW_COPY_DATA);
                if (shadow_data == NULL) {
                        DEBUG(0,("talloc_zero() failed!\n"));
                        return ERROR_NT(NT_STATUS_NO_MEMORY);
@@ -2449,6 +2450,10 @@ static int call_nt_transact_get_user_quota(connection_struct *conn, char *inbuf,
                        }
 
                        sid_len = IVAL(pdata,4);
+                       /* Ensure this is less than 1mb. */
+                       if (sid_len > (1024*1024)) {
+                               return ERROR_DOS(ERRDOS,ERRnomem);
+                       }
 
                        if (data_count < 8+sid_len) {
                                DEBUG(0,("TRANSACT_GET_USER_QUOTA_FOR_SID: requires %d >= %lu bytes data\n",data_count,(unsigned long)(8+sid_len)));
@@ -2703,15 +2708,21 @@ due to being in oplock break state.\n", (unsigned int)function_code ));
                        CVAL(inbuf, smb_wct), 19 + (setup_count/2)));
                goto bad_param;
        }
-    
+
+       /* Don't allow more than 128mb for each value. */
+       if ((total_parameter_count > (1024*1024*128)) || (total_data_count > (1024*1024*128))) {
+               END_PROFILE(SMBnttrans);
+               return ERROR_DOS(ERRDOS,ERRnomem);
+       }
+
        /* Allocate the space for the setup, the maximum needed parameters and data */
 
        if(setup_count > 0)
-               setup = (char *)malloc(setup_count);
+               setup = (char *)SMB_MALLOC(setup_count);
        if (total_parameter_count > 0)
-               params = (char *)malloc(total_parameter_count);
+               params = (char *)SMB_MALLOC(total_parameter_count);
        if (total_data_count > 0)
-               data = (char *)malloc(total_data_count);
+               data = (char *)SMB_MALLOC(total_data_count);
  
        if ((total_parameter_count && !params)  || (total_data_count && !data) ||
                                (setup_count && !setup)) {
index 7cadf5adbacfc1857c579790c7ced5d1bc737388..bf3fbf7fecd556afbed62caaf134432421731a8b 100644 (file)
@@ -681,7 +681,7 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
                                        return -1;
                                }
                                
-                               broken_entry = malloc(sizeof(struct share_mode_entry_list));
+                               broken_entry = SMB_MALLOC_P(struct share_mode_entry_list);
                                if (!broken_entry) {
                                        smb_panic("open_mode_check: malloc fail.\n");
                                }
index 1ffc798b1fc388fb4865456a0b90f2e6953d04c5..3ebf93e5608ab4056fe6c40d0963023181af88bb 100644 (file)
@@ -740,12 +740,12 @@ static BOOL oplock_break(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id,
         * messages crossing on the wire.
         */
 
-       if((inbuf = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL) {
+       if((inbuf = (char *)SMB_MALLOC(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL) {
                DEBUG(0,("oplock_break: malloc fail for input buffer.\n"));
                return False;
        }
 
-       if((outbuf = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL) {
+       if((outbuf = (char *)SMB_MALLOC(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL) {
                DEBUG(0,("oplock_break: malloc fail for output buffer.\n"));
                SAFE_FREE(inbuf);
                return False;
index eb389d7013da5ec970cae8e74c1f9a3b3a75e648..213ef98ea3439c1d4b63b6d0dbf3ffb26970e099 100644 (file)
@@ -139,7 +139,7 @@ int register_vuid(auth_serversupplied_info *server_info, DATA_BLOB session_key,
                return UID_FIELD_INVALID;
        }
 
-       if((vuser = (user_struct *)malloc( sizeof(user_struct) )) == NULL) {
+       if((vuser = SMB_MALLOC_P(user_struct)) == NULL) {
                DEBUG(0,("Failed to malloc users struct!\n"));
                data_blob_free(&session_key);
                return UID_FIELD_INVALID;
@@ -316,7 +316,7 @@ void add_session_user(const char *user)
                        DEBUG(3,("add_session_user: session userlist already too large.\n"));
                        return;
                }
-               newlist = Realloc( session_userlist, len_session_userlist + PSTRING_LEN );
+               newlist = SMB_REALLOC( session_userlist, len_session_userlist + PSTRING_LEN );
                if( newlist == NULL ) {
                        DEBUG(1,("Unable to resize session_userlist\n"));
                        return;
@@ -498,9 +498,9 @@ BOOL authorise_login(int snum, fstring user, DATA_BLOB password,
                char *user_list = NULL;
 
                if ( session_userlist )
-                       user_list = strdup(session_userlist);
+                       user_list = SMB_STRDUP(session_userlist);
                else
-                       user_list = strdup("");
+                       user_list = SMB_STRDUP("");
 
                if (!user_list)
                        return(False);
index d30cf62e7c66c787d07a042a1e8dfa80c9fc7cfc..903b9435225f5ae06d5aaed98604d371416046c2 100644 (file)
@@ -166,7 +166,7 @@ static char *create_pai_buf(canon_ace *file_ace_list, canon_ace *dir_ace_list, B
 
        *store_size = PAI_ENTRIES_BASE + ((num_entries + num_def_entries)*PAI_ENTRY_LENGTH);
 
-       pai_buf = malloc(*store_size);
+       pai_buf = SMB_MALLOC(*store_size);
        if (!pai_buf) {
                return NULL;
        }
@@ -343,7 +343,7 @@ static struct pai_val *create_pai_val(char *buf, size_t size)
        if (!check_pai_ok(buf, size))
                return NULL;
 
-       paiv = malloc(sizeof(struct pai_val));
+       paiv = SMB_MALLOC_P(struct pai_val);
        if (!paiv)
                return NULL;
 
@@ -362,7 +362,7 @@ static struct pai_val *create_pai_val(char *buf, size_t size)
        for (i = 0; i < paiv->num_entries; i++) {
                struct pai_entry *paie;
 
-               paie = malloc(sizeof(struct pai_entry));
+               paie = SMB_MALLOC_P(struct pai_entry);
                if (!paie) {
                        free_inherited_info(paiv);
                        return NULL;
@@ -393,7 +393,7 @@ static struct pai_val *create_pai_val(char *buf, size_t size)
        for (i = 0; i < paiv->num_def_entries; i++) {
                struct pai_entry *paie;
 
-               paie = malloc(sizeof(struct pai_entry));
+               paie = SMB_MALLOC_P(struct pai_entry);
                if (!paie) {
                        free_inherited_info(paiv);
                        return NULL;
@@ -438,7 +438,7 @@ static struct pai_val *load_inherited_info(files_struct *fsp)
        if (!lp_map_acl_inherit(SNUM(fsp->conn)))
                return NULL;
 
-       if ((pai_buf = malloc(pai_buf_size)) == NULL)
+       if ((pai_buf = SMB_MALLOC(pai_buf_size)) == NULL)
                return NULL;
 
        do {
@@ -456,7 +456,10 @@ static struct pai_val *load_inherited_info(files_struct *fsp)
                        /* Buffer too small - enlarge it. */
                        pai_buf_size *= 2;
                        SAFE_FREE(pai_buf);
-                       if ((pai_buf = malloc(pai_buf_size)) == NULL)
+                       if (pai_buf_size > 1024*1024) {
+                               return NULL; /* Limit malloc to 1mb. */
+                       }
+                       if ((pai_buf = SMB_MALLOC(pai_buf_size)) == NULL)
                                return NULL;
                }
        } while (ret == -1);
@@ -523,7 +526,7 @@ static void free_canon_ace_list( canon_ace *list_head )
 
 static canon_ace *dup_canon_ace( canon_ace *src_ace)
 {
-       canon_ace *dst_ace = (canon_ace *)malloc(sizeof(canon_ace));
+       canon_ace *dst_ace = SMB_MALLOC_P(canon_ace);
 
        if (dst_ace == NULL)
                return NULL;
@@ -1083,7 +1086,7 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
        }
 
        if (!got_user) {
-               if ((pace = (canon_ace *)malloc(sizeof(canon_ace))) == NULL) {
+               if ((pace = SMB_MALLOC_P(canon_ace)) == NULL) {
                        DEBUG(0,("ensure_canon_entry_valid: malloc fail.\n"));
                        return False;
                }
@@ -1113,7 +1116,7 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
        }
 
        if (!got_grp) {
-               if ((pace = (canon_ace *)malloc(sizeof(canon_ace))) == NULL) {
+               if ((pace = SMB_MALLOC_P(canon_ace)) == NULL) {
                        DEBUG(0,("ensure_canon_entry_valid: malloc fail.\n"));
                        return False;
                }
@@ -1139,7 +1142,7 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
        }
 
        if (!got_other) {
-               if ((pace = (canon_ace *)malloc(sizeof(canon_ace))) == NULL) {
+               if ((pace = SMB_MALLOC_P(canon_ace)) == NULL) {
                        DEBUG(0,("ensure_canon_entry_valid: malloc fail.\n"));
                        return False;
                }
@@ -1323,7 +1326,7 @@ static BOOL create_canon_ace_lists(files_struct *fsp, SMB_STRUCT_STAT *pst,
                 * Create a cannon_ace entry representing this NT DACL ACE.
                 */
 
-               if ((current_ace = (canon_ace *)malloc(sizeof(canon_ace))) == NULL) {
+               if ((current_ace = SMB_MALLOC_P(canon_ace)) == NULL) {
                        free_canon_ace_list(file_ace);
                        free_canon_ace_list(dir_ace);
                        DEBUG(0,("create_canon_ace_lists: malloc fail.\n"));
@@ -2161,7 +2164,7 @@ static canon_ace *canonicalise_acl( files_struct *fsp, SMB_ACL_T posix_acl, SMB_
                 * Add this entry to the list.
                 */
 
-               if ((ace = (canon_ace *)malloc(sizeof(canon_ace))) == NULL)
+               if ((ace = SMB_MALLOC_P(canon_ace)) == NULL)
                        goto fail;
 
                ZERO_STRUCTP(ace);
@@ -2793,7 +2796,7 @@ size_t get_nt_acl(files_struct *fsp, uint32 security_info, SEC_DESC **ppdesc)
                        num_def_acls = count_canon_ace_list(dir_ace);
 
                        /* Allocate the ace list. */
-                       if ((nt_ace_list = (SEC_ACE *)malloc((num_acls + num_profile_acls + num_def_acls)* sizeof(SEC_ACE))) == NULL) {
+                       if ((nt_ace_list = SMB_MALLOC_ARRAY(SEC_ACE,num_acls + num_profile_acls + num_def_acls)) == NULL) {
                                DEBUG(0,("get_nt_acl: Unable to malloc space for nt_ace_list.\n"));
                                goto done;
                        }
index 5be68d9f0a18ddcea579679a3fb14ca5ad99ee64..8adc5c2e665ecb1dc0e1b6539d8c57ed8ed68c9f 100644 (file)
@@ -85,8 +85,7 @@ static void free_queued_message(struct pending_message_list *msg)
 static BOOL push_queued_message(enum q_type qt, char *buf, int msg_len, struct timeval *ptv, char *private, size_t private_len)
 {
        struct pending_message_list *tmp_msg;
-       struct pending_message_list *msg = (struct pending_message_list *)
-                               malloc(sizeof(struct pending_message_list));
+       struct pending_message_list *msg = SMB_MALLOC_P(struct pending_message_list);
 
        if(msg == NULL) {
                DEBUG(0,("push_message: malloc fail (1)\n"));
@@ -1498,8 +1497,8 @@ void smbd_process(void)
        unsigned int num_smbs = 0;
        const size_t total_buffer_size = BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN;
 
-       InBuffer = (char *)malloc(total_buffer_size);
-       OutBuffer = (char *)malloc(total_buffer_size);
+       InBuffer = (char *)SMB_MALLOC(total_buffer_size);
+       OutBuffer = (char *)SMB_MALLOC(total_buffer_size);
        if ((InBuffer == NULL) || (OutBuffer == NULL)) 
                return;
 
index eda523e73a9008976e072a713807d64a7f08d42a..23657d3f1f705ce67d1240940d9662b49836b0d5 100644 (file)
@@ -899,7 +899,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
                                END_PROFILE(SMBsearch);
                                return ERROR_DOS(ERRDOS,ERRnofids);
                        }
-                       dptr_set_wcard(dptr_num, strdup(mask));
+                       dptr_set_wcard(dptr_num, SMB_STRDUP(mask));
                        dptr_set_attr(dptr_num, dirtype);
                } else {
                        dirtype = dptr_attr(dptr_num);
@@ -4945,7 +4945,7 @@ int reply_writebmpx(connection_struct *conn, char *inbuf,char *outbuf, int size,
                if(fsp->wbmpx_ptr != NULL)
                        wbms = fsp->wbmpx_ptr; /* Use an existing struct */
                else
-                       wbms = (write_bmpx_struct *)malloc(sizeof(write_bmpx_struct));
+                       wbms = SMB_MALLOC_P(write_bmpx_struct);
                if(!wbms) {
                        DEBUG(0,("Out of memory in reply_readmpx\n"));
                        END_PROFILE(SMBwriteBmpx);
index 8a85792ead55d4f70e24d3a3ec455eaa5ee90588..a5411b94a177523aeebdda5984404218f3c3bf3f 100644 (file)
@@ -154,7 +154,7 @@ int get_current_groups(gid_t gid, int *p_ngroups, gid_t **p_groups)
                goto fail;
        }
 
-       if((groups = (gid_t *)malloc(sizeof(gid_t)*(ngroups+1))) == NULL) {
+       if((groups = SMB_MALLOC_ARRAY(gid_t, ngroups+1)) == NULL) {
                DEBUG(0,("setup_groups malloc fail !\n"));
                goto fail;
        }
@@ -260,7 +260,7 @@ BOOL push_sec_ctx(void)
        ctx_p->ngroups = sys_getgroups(0, NULL);
 
        if (ctx_p->ngroups != 0) {
-               if (!(ctx_p->groups = malloc(ctx_p->ngroups * sizeof(gid_t)))) {
+               if (!(ctx_p->groups = SMB_MALLOC_ARRAY(gid_t, ctx_p->ngroups))) {
                        DEBUG(0, ("Out of memory in push_sec_ctx()\n"));
                        delete_nt_token(&ctx_p->token);
                        return False;
index 91ebaeb830bcf187fb205ce9c5e9cf7a749bedbb..9a9a0d90b24a3a003445e34121cd456fafce41fd 100644 (file)
@@ -151,7 +151,7 @@ BOOL session_claim(user_struct *vuser)
                               sessionid.id_str, sessionid.id_num);
        }
 
-       vuser->session_keystr = strdup(keystr);
+       vuser->session_keystr = SMB_STRDUP(keystr);
        if (!vuser->session_keystr) {
                DEBUG(0, ("session_claim:  strdup() failed for session_keystr\n"));
                return False;
@@ -221,8 +221,8 @@ static int gather_sessioninfo(TDB_CONTEXT *stdb, TDB_DATA kbuf, TDB_DATA dbuf,
        const struct sessionid *current = (const struct sessionid *) dbuf.dptr;
 
        sesslist->count += 1;
-       sesslist->sessions = REALLOC(sesslist->sessions, sesslist->count * 
-                                     sizeof(struct sessionid));
+       sesslist->sessions = SMB_REALLOC_ARRAY(sesslist->sessions, struct sessionid,
+                                       sesslist->count);
 
        memcpy(&sesslist->sessions[sesslist->count - 1], current, 
               sizeof(struct sessionid));
index ba37d4927ccbfc62ca322c88fd9a7a7a87209fca..cfc5286327b9be6e71b3a0a770a50b9bda1ef53f 100644 (file)
@@ -76,7 +76,7 @@ void stat_cache_add( const char *full_orig_name, const char *orig_translated_pat
         * translated path.
         */
 
-       translated_path = strdup(orig_translated_path);
+       translated_path = SMB_STRDUP(orig_translated_path);
        if (!translated_path)
                return;
 
@@ -88,7 +88,7 @@ void stat_cache_add( const char *full_orig_name, const char *orig_translated_pat
        }
 
        if(case_sensitive) {
-               original_path = strdup(full_orig_name);
+               original_path = SMB_STRDUP(full_orig_name);
        } else {
                original_path = strdup_upper(full_orig_name);
        }
@@ -179,7 +179,7 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath,
                return False;
 
        if (conn->case_sensitive) {
-               chk_name = strdup(name);
+               chk_name = SMB_STRDUP(name);
                if (!chk_name) {
                        DEBUG(0, ("stat_cache_lookup: strdup failed!\n"));
                        return False;
index 4a10511a0e4c664baf4efb021c47f3e6f6166521..7269ab91579a16ae8e0e924ab02b83ffaa696858 100644 (file)
@@ -115,7 +115,7 @@ static BOOL get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn, files_str
 
  again:
 
-       val = talloc_realloc(mem_ctx, val, attr_size);
+       val = TALLOC_REALLOC_ARRAY(mem_ctx, val, char, attr_size);
        if (!val) {
                return False;
        }
@@ -169,8 +169,8 @@ static struct ea_list *get_ea_list(TALLOC_CTX *mem_ctx, connection_struct *conn,
                return NULL;
        }
 
-       for (i = 0, ea_namelist = talloc(mem_ctx, ea_namelist_size); i < 6;
-                       ea_namelist = talloc_realloc(mem_ctx, ea_namelist, ea_namelist_size), i++) {
+       for (i = 0, ea_namelist = TALLOC(mem_ctx, ea_namelist_size); i < 6;
+                       ea_namelist = TALLOC_REALLOC_ARRAY(mem_ctx, ea_namelist, char, ea_namelist_size), i++) {
                if (fsp && fsp->fd != -1) {
                        sizeret = SMB_VFS_FLISTXATTR(fsp, fsp->fd, ea_namelist, ea_namelist_size);
                } else {
@@ -196,7 +196,7 @@ static struct ea_list *get_ea_list(TALLOC_CTX *mem_ctx, connection_struct *conn,
                        if (strnequal(p, "system.", 7) || samba_private_attr_name(p))
                                continue;
                
-                       listp = talloc(mem_ctx, sizeof(struct ea_list));
+                       listp = TALLOC_P(mem_ctx, struct ea_list);
                        if (!listp)
                                return NULL;
 
@@ -672,7 +672,7 @@ static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf, i
        }
 
        /* Realloc the size of parameters and data we will return */
-       params = Realloc(*pparams, 28);
+       params = SMB_REALLOC(*pparams, 28);
        if( params == NULL )
                return(ERROR_DOS(ERRDOS,ERRnomem));
        *pparams = params;
@@ -1418,7 +1418,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
 
        DEBUG(5,("dir=%s, mask = %s\n",directory, mask));
 
-       pdata = Realloc(*ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
+       pdata = SMB_REALLOC(*ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
        if( pdata == NULL )
                return(ERROR_DOS(ERRDOS,ERRnomem));
 
@@ -1426,7 +1426,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
        memset((char *)pdata,'\0',max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
 
        /* Realloc the params space */
-       params = Realloc(*pparams, 10);
+       params = SMB_REALLOC(*pparams, 10);
        if (params == NULL)
                return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
@@ -1438,7 +1438,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
        /* Save the wildcard match and attribs we are using on this directory - 
                needed as lanman2 assumes these are being saved between calls */
 
-       if(!(wcard = strdup(mask))) {
+       if(!(wcard = SMB_STRDUP(mask))) {
                dptr_close(&dptr_num);
                return ERROR_DOS(ERRDOS,ERRnomem);
        }
@@ -1617,7 +1617,7 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
                        return ERROR_DOS(ERRDOS,ERRunknownlevel);
        }
 
-       pdata = Realloc( *ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
+       pdata = SMB_REALLOC( *ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
        if(pdata == NULL)
                return ERROR_DOS(ERRDOS,ERRnomem);
 
@@ -1625,7 +1625,7 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
        memset((char *)pdata,'\0',max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
 
        /* Realloc the params space */
-       params = Realloc(*pparams, 6*SIZEOFWORD);
+       params = SMB_REALLOC(*pparams, 6*SIZEOFWORD);
        if( params == NULL )
                return ERROR_DOS(ERRDOS,ERRnomem);
 
@@ -1836,7 +1836,7 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf
                return ERROR_DOS(ERRSRV,ERRinvdevice);
        }
 
-       pdata = Realloc(*ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
+       pdata = SMB_REALLOC(*ppdata, max_data_bytes + DIR_ENTRY_SAFETY_MARGIN);
        if ( pdata == NULL )
                return ERROR_DOS(ERRDOS,ERRnomem);
 
@@ -2519,13 +2519,13 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
                file_size = 0;
        }
 
-       params = Realloc(*pparams,2);
+       params = SMB_REALLOC(*pparams,2);
        if (params == NULL)
          return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
        memset((char *)params,'\0',2);
        data_size = max_data_bytes + DIR_ENTRY_SAFETY_MARGIN;
-       pdata = Realloc(*ppdata, data_size); 
+       pdata = SMB_REALLOC(*ppdata, data_size); 
        if ( pdata == NULL )
                return ERROR_DOS(ERRDOS,ERRnomem);
        *ppdata = pdata;
@@ -3302,7 +3302,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char
                tran_call,fname, fsp ? fsp->fnum : -1, info_level,total_data));
 
        /* Realloc the parameter and data sizes */
-       params = Realloc(*pparams,2);
+       params = SMB_REALLOC(*pparams,2);
        if(params == NULL)
                return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
@@ -4028,7 +4028,7 @@ static int call_trans2mkdir(connection_struct *conn, char *inbuf, char *outbuf,
        }
 
        /* Realloc the parameter and data sizes */
-       params = Realloc(*pparams,2);
+       params = SMB_REALLOC(*pparams,2);
        if(params == NULL)
                return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
@@ -4068,7 +4068,7 @@ static int call_trans2findnotifyfirst(connection_struct *conn, char *inbuf, char
        }
 
        /* Realloc the parameter and data sizes */
-       params = Realloc(*pparams,6);
+       params = SMB_REALLOC(*pparams,6);
        if(params == NULL) 
                return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
@@ -4101,7 +4101,7 @@ static int call_trans2findnotifynext(connection_struct *conn, char *inbuf, char
        DEBUG(3,("call_trans2findnotifynext\n"));
 
        /* Realloc the parameter and data sizes */
-       params = Realloc(*pparams,4);
+       params = SMB_REALLOC(*pparams,4);
        if(params == NULL)
                return ERROR_DOS(ERRDOS,ERRnomem);
        *pparams = params;
@@ -4168,7 +4168,7 @@ static int call_trans2ioctl(connection_struct *conn, char* inbuf, char* outbuf,
 
        if ((SVAL(inbuf,(smb_setup+4)) == LMCAT_SPL) &&
                        (SVAL(inbuf,(smb_setup+6)) == LMFUNC_GETJOBID)) {
-               pdata = Realloc(*ppdata, 32);
+               pdata = SMB_REALLOC(*ppdata, 32);
                if(pdata == NULL)
                        return ERROR_DOS(ERRDOS,ERRnomem);
                *ppdata = pdata;
@@ -4319,9 +4319,9 @@ int reply_trans2(connection_struct *conn,
     
        /* Allocate the space for the maximum needed parameters and data */
        if (total_params > 0)
-               params = (char *)malloc(total_params);
+               params = (char *)SMB_MALLOC(total_params);
        if (total_data > 0)
-               data = (char *)malloc(total_data);
+               data = (char *)SMB_MALLOC(total_data);
   
        if ((total_params && !params)  || (total_data && !data)) {
                DEBUG(2,("Out of memory in reply_trans2\n"));
index 10599c50a1209efc4557580703bd26f779b6df33..0102739fe3992ce587e3c1896c5e2f4463cabb43 100644 (file)
@@ -188,7 +188,7 @@ NTSTATUS smb_register_vfs(int version, const char *name, vfs_op_tuple *vfs_op_tu
                return NT_STATUS_OBJECT_NAME_COLLISION;
        }
 
-       entry = smb_xmalloc(sizeof(struct vfs_init_function_entry));
+       entry = SMB_XMALLOC_P(struct vfs_init_function_entry);
        entry->name = smb_xstrdup(name);
        entry->vfs_op_tuples = vfs_op_tuples;
 
@@ -261,7 +261,7 @@ BOOL vfs_init_custom(connection_struct *conn, const char *vfs_object)
                return False;
        }
 
-       handle = (vfs_handle_struct *)talloc_zero(conn->mem_ctx,sizeof(vfs_handle_struct));
+       handle = TALLOC_ZERO_P(conn->mem_ctx,vfs_handle_struct);
        if (!handle) {
                DEBUG(0,("talloc_zero() failed!\n"));
                SAFE_FREE(module_name);
@@ -684,7 +684,7 @@ static void array_promote(char *array,int elsize,int element)
        if (element == 0)
                return;
 
-       p = (char *)malloc(elsize);
+       p = (char *)SMB_MALLOC(elsize);
 
        if (!p) {
                DEBUG(5,("array_promote: malloc fail\n"));
@@ -879,7 +879,7 @@ BOOL reduce_name(connection_struct *conn, const pstring fname)
                                pstrcat(tmp_fname, last_component);
 #ifdef REALPATH_TAKES_NULL
                                SAFE_FREE(resolved_name);
-                               resolved_name = strdup(tmp_fname);
+                               resolved_name = SMB_STRDUP(tmp_fname);
                                if (!resolved_name) {
                                        DEBUG(0,("reduce_name: malloc fail for %s\n", tmp_fname));
                                        errno = saved_errno;
index ceecbcb05dd3af4f476710e9283b07125c6e4111..45895d2ec71bc4a84d53a7a40729415db385a553 100644 (file)
 #include "spinlock.h"
 #else
 #include "includes.h"
+
+#if defined(PARANOID_MALLOC_CHECKER)
+#ifdef malloc
+#undef malloc
+#endif
+
+#ifdef realloc
+#undef realloc
+#endif
+
+#ifdef calloc
+#undef calloc
+#endif
+
+#ifdef strdup
+#undef strdup
+#endif
+
+#ifdef strndup
+#undef strndup
+#endif
+
+#endif
+
 #endif
 
 #define TDB_MAGIC_FOOD "TDB file\n"
index 68b6fadc882e59628fc0d009b306d6568b9b717c..3f5bf3891b30c53bcbd6a00a6068c9dbccfe6430 100644 (file)
 
 #else
 #include "includes.h"
+
+#ifdef malloc
+#undef malloc
+#endif
+                                                                                                                 
+#ifdef realloc
+#undef realloc
+#endif
+                                                                                                                 
+#ifdef calloc
+#undef calloc
+#endif
+
 #endif
 
 #include "tdb.h"
index e57eccfe59812967da055d931bc5e7fa1bed852e..45ebdae3af04384250ffb95b0c3f8645a325f330 100644 (file)
@@ -554,7 +554,7 @@ int tdb_unpack(char *buf, int bufsize, const char *fmt, ...)
                        len += *i;
                        if (bufsize < len)
                                goto no_space;
-                       *b = (char *)malloc(*i);
+                       *b = (char *)SMB_MALLOC(*i);
                        if (! *b)
                                goto no_space;
                        memcpy(*b, buf+4, *i);
@@ -778,7 +778,7 @@ TDB_LIST_NODE *tdb_search_keys(TDB_CONTEXT *tdb, const char* pattern)
        
        for (key = tdb_firstkey(tdb); key.dptr; key = next) {
                /* duplicate key string to ensure null-termination */
-               char *key_str = (char*) strndup(key.dptr, key.dsize);
+               char *key_str = (char*) SMB_STRNDUP(key.dptr, key.dsize);
                if (!key_str) {
                        DEBUG(0, ("tdb_search_keys: strndup() failed!\n"));
                        smb_panic("strndup failed!\n");
@@ -790,7 +790,7 @@ TDB_LIST_NODE *tdb_search_keys(TDB_CONTEXT *tdb, const char* pattern)
 
                /* do the pattern checking */
                if (fnmatch(pattern, key_str, 0) == 0) {
-                       rec = (TDB_LIST_NODE*) malloc(sizeof(*rec));
+                       rec = SMB_MALLOC_P(TDB_LIST_NODE);
                        ZERO_STRUCTP(rec);
 
                        rec->node_key = key;
index 784612fc71b26f1144f3b53985c8c89659d419d2..251e94db906ddf941a6f6878c100664b9ea9ab98 100644 (file)
@@ -144,7 +144,7 @@ NTSTATUS connect_to_service(struct cli_state **c, struct in_addr *server_ip,
        if (!opt_password && !opt_machine_pass) {
                char *pass = getpass("Password:");
                if (pass) {
-                       opt_password = strdup(pass);
+                       opt_password = SMB_STRDUP(pass);
                }
        }
        
@@ -221,11 +221,11 @@ NTSTATUS connect_to_ipc_anonymous(struct cli_state **c,
 NTSTATUS connect_pipe(struct cli_state **cli_dst, int pipe_num, BOOL *got_pipe)
 {
        NTSTATUS nt_status;
-       char *server_name = strdup("127.0.0.1");
+       char *server_name = SMB_STRDUP("127.0.0.1");
        struct cli_state *cli_tmp = NULL;
 
        if (opt_destination)
-               server_name = strdup(opt_destination);
+               server_name = SMB_STRDUP(opt_destination);
 
        /* make a connection to a named pipe */
        nt_status = connect_to_ipc(&cli_tmp, NULL, server_name);
@@ -270,13 +270,13 @@ BOOL net_find_server(unsigned flags, struct in_addr *server_ip, char **server_na
 {
 
        if (opt_host) {
-               *server_name = strdup(opt_host);
+               *server_name = SMB_STRDUP(opt_host);
        }               
 
        if (opt_have_ip) {
                *server_ip = opt_dest_ip;
                if (!*server_name) {
-                       *server_name = strdup(inet_ntoa(opt_dest_ip));
+                       *server_name = SMB_STRDUP(inet_ntoa(opt_dest_ip));
                }
        } else if (*server_name) {
                /* resolve the IP address */
@@ -296,7 +296,7 @@ BOOL net_find_server(unsigned flags, struct in_addr *server_ip, char **server_na
                        if ( !name_status_find(opt_target_workgroup, 0x1b, 0x20, pdc_ip, dc_name) )
                                return False;
                                
-                       *server_name = strdup(dc_name);
+                       *server_name = SMB_STRDUP(dc_name);
                        *server_ip = pdc_ip;
                }
                
@@ -309,7 +309,7 @@ BOOL net_find_server(unsigned flags, struct in_addr *server_ip, char **server_na
                } else {
                        *server_ip = msbrow_ip;
                }
-               *server_name = strdup(inet_ntoa(opt_dest_ip));
+               *server_name = SMB_STRDUP(inet_ntoa(opt_dest_ip));
        } else if (flags & NET_FLAGS_MASTER) {
                struct in_addr brow_ips;
                if (!resolve_name(opt_target_workgroup, &brow_ips, 0x1D))  {
@@ -319,11 +319,11 @@ BOOL net_find_server(unsigned flags, struct in_addr *server_ip, char **server_na
                } else {
                        *server_ip = brow_ips;
                }
-               *server_name = strdup(inet_ntoa(opt_dest_ip));
+               *server_name = SMB_STRDUP(inet_ntoa(opt_dest_ip));
        } else if (!(flags & NET_FLAGS_LOCALHOST_DEFAULT_INSANE)) {
                extern struct in_addr loopback_ip;
                *server_ip = loopback_ip;
-               *server_name = strdup("127.0.0.1");
+               *server_name = SMB_STRDUP("127.0.0.1");
        }
 
        if (!server_name || !*server_name) {
@@ -786,7 +786,7 @@ static struct functable net_func[] = {
                        break;
                case 'U':
                        opt_user_specified = True;
-                       opt_user_name = strdup(opt_user_name);
+                       opt_user_name = SMB_STRDUP(opt_user_name);
                        p = strchr(opt_user_name,'%');
                        if (p) {
                                *p = 0;
index 9efa45e58f566667dc1745c3691aa89f87d5e16d..72e8f70a7d86e4e7639550f48d26072df911d7ca 100644 (file)
@@ -259,10 +259,10 @@ static BOOL usergrp_display(char *field, void **values, void *data_area)
        if (!values) /* must be new field, indicate string field */
                return True;
        if (StrCaseCmp(field, "sAMAccountName") == 0) {
-               disp_fields[0] = strdup((char *) values[0]);
+               disp_fields[0] = SMB_STRDUP((char *) values[0]);
        }
        if (StrCaseCmp(field, "description") == 0)
-               disp_fields[1] = strdup((char *) values[0]);
+               disp_fields[1] = SMB_STRDUP((char *) values[0]);
        return True;
 }
 
@@ -718,7 +718,7 @@ int net_ads_join(int argc, const char **argv)
        }
 
        tmp_password = generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH);
-       password = strdup(tmp_password);
+       password = SMB_STRDUP(tmp_password);
 
        if (!(ads = ads_startup())) {
                return -1;
index a95591645876e70940a091ce182ef32e9e067562..6bbab1c8177671eb73ba90679e6819f6ae6a5692 100644 (file)
@@ -101,7 +101,7 @@ static time_t parse_timeout(const char* timeout_str)
        /* number detection */
        len = (sign) ? strlen(&timeout_str[number_begin]) : len;
        number_end = (unit) ? len - 1 : len;
-       number = strndup(&timeout_str[number_begin], number_end);
+       number = SMB_STRNDUP(&timeout_str[number_begin], number_end);
        
        /* calculate actual timeout value */
        timeout = (time_t)atoi(number);
index 35892e8b52cec80a85547a9f4d077ab4f8cea994..b4f4cdb0a8ce58d754ed991e38b347e9dbb2d07a 100644 (file)
@@ -126,7 +126,7 @@ static NTSTATUS net_idmap_fixup_hwm(void)
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       tdbfile = strdup(lock_path("winbindd_idmap.tdb"));
+       tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
        if (!tdbfile) {
                DEBUG(0, ("idmap_init: out of memory!\n"));
                return NT_STATUS_NO_MEMORY;
index cae0a7f7da8175f664bfbf4da228573c93d9c7a9..6e8f0d088dafc4d24f20cf1deb00912688629674 100644 (file)
@@ -198,7 +198,7 @@ static int rap_share_add(int argc, const char **argv)
        if (!(cli = net_make_ipc_connection(0))) 
                 return -1;
 
-       sharename = strdup(argv[0]);
+       sharename = SMB_STRDUP(argv[0]);
        p = strchr(sharename, '=');
        *p = 0;
        strlcpy(sinfo.share_name, sharename, sizeof(sinfo.share_name));
index a488affe2638b072aabe281492c36c92ded1591c..4c5544aa9731b6ff58a2ff197dda3c33d8db3a44 100644 (file)
@@ -884,7 +884,7 @@ rpc_user_info_internals(const DOM_SID *domain_sid, const char *domain_name,
 
        /* Look up rids */
 
-       rids = (uint32 *)talloc(mem_ctx, sizeof(uint32) * num_rids);
+       rids = TALLOC_ARRAY(mem_ctx, uint32, num_rids);
 
        for (i = 0; i < num_rids; i++)
                 rids[i] = user_gids[i].g_rid;
@@ -2805,7 +2805,7 @@ rpc_share_migrate_files_internals(const DOM_SID *domain_sid, const char *domain_
        pstring mask;
        char *dst = NULL;
 
-       dst = strdup(opt_destination?opt_destination:"127.0.0.1");
+       dst = SMB_STRDUP(opt_destination?opt_destination:"127.0.0.1");
 
        init_enum_hnd(&hnd, 0);
 
@@ -2989,7 +2989,7 @@ static struct full_alias *server_aliases;
 static void push_alias(TALLOC_CTX *mem_ctx, struct full_alias *alias)
 {
        if (server_aliases == NULL)
-               server_aliases = malloc(100 * sizeof(struct full_alias));
+               server_aliases = SMB_MALLOC_ARRAY(struct full_alias, 100);
 
        server_aliases[num_server_aliases] = *alias;
        num_server_aliases += 1;
@@ -3053,8 +3053,7 @@ rpc_fetch_domain_aliases(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                        alias.members = NULL;
 
                        if (alias.num_members > 0) {
-                               alias.members = malloc(alias.num_members *
-                                                      sizeof(DOM_SID));
+                               alias.members = SMB_MALLOC_ARRAY(DOM_SID, alias.num_members);
 
                                for (j = 0; j < alias.num_members; j++)
                                        sid_copy(&alias.members[j],
@@ -3183,7 +3182,7 @@ static void init_user_token(NT_USER_TOKEN *token, DOM_SID *user_sid)
 
        token->num_sids = 4;
 
-       token->user_sids = malloc(4 * sizeof(DOM_SID));
+       token->user_sids = SMB_MALLOC_ARRAY(DOM_SID, 4);
 
        token->user_sids[0] = *user_sid;
        sid_copy(&token->user_sids[1], &global_sid_World);
@@ -3212,8 +3211,7 @@ static void add_sid_to_token(NT_USER_TOKEN *token, DOM_SID *sid)
        if (is_sid_in_token(token, sid))
                return;
 
-       token->user_sids = Realloc(token->user_sids,
-                                  (token->num_sids+1) * sizeof(DOM_SID));
+       token->user_sids = SMB_REALLOC_ARRAY(token->user_sids, DOM_SID, token->num_sids+1);
 
        sid_copy(&token->user_sids[token->num_sids], sid);
 
@@ -3392,7 +3390,7 @@ static BOOL get_user_tokens(int *num_tokens, struct user_token **user_tokens)
                *num_tokens += 1;
        }
 
-       result = malloc(*num_tokens * sizeof(struct user_token));
+       result = SMB_MALLOC_ARRAY(struct user_token, *num_tokens);
 
        if (result == NULL) {
                DEBUG(1, ("Could not malloc sid array\n"));
@@ -3467,9 +3465,7 @@ static BOOL get_user_tokens_from_file(FILE *f,
                /* And a new user... */
 
                *num_tokens += 1;
-               *tokens = Realloc(*tokens,
-                                 *num_tokens *
-                                 sizeof(struct user_token));
+               *tokens = SMB_REALLOC_ARRAY(*tokens, struct user_token, *num_tokens);
                if (*tokens == NULL) {
                        DEBUG(0, ("Could not realloc tokens\n"));
                        return False;
@@ -3587,9 +3583,8 @@ static void collect_share(const char *name, uint32 m,
                return;
 
        share_list->num_shares += 1;
-       share_list->shares = Realloc(share_list->shares,
-                                    share_list->num_shares * sizeof(char *));
-       share_list->shares[share_list->num_shares-1] = strdup(name);
+       share_list->shares = SMB_REALLOC_ARRAY(share_list->shares, char *, share_list->num_shares);
+       share_list->shares[share_list->num_shares-1] = SMB_STRDUP(name);
 }
 
 static void rpc_share_userlist_usage(void)
index cb8a5ee4d4fbad17259ec827c8c1febab0df1982..79c632f8314d37b78a227ced1b4fc3e8e6ad2007 100644 (file)
@@ -258,7 +258,7 @@ int net_rpc_join_newstyle(int argc, const char **argv)
        { 
                char *str;
                str = generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH);
-               clear_trust_password = strdup(str);
+               clear_trust_password = SMB_STRDUP(str);
                E_md4hash(clear_trust_password, md4_trust_password);
        }
 
index 25f3ab51842e62c705a0c20589e4d0679cacfa1e..456a29287fde0795f544e80a1a40a86437384748 100644 (file)
@@ -501,7 +501,7 @@ NTSTATUS net_copy_file(TALLOC_CTX *mem_ctx,
                }
 
                /* allocate memory */
-               if (!(data = (char *)malloc(read_size))) {
+               if (!(data = (char *)SMB_MALLOC(read_size))) {
                        d_printf("malloc fail for size %d\n", read_size);
                        nt_status = NT_STATUS_NO_MEMORY;
                        goto out;
@@ -1153,7 +1153,7 @@ get_printer_info(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
 
        /* argument given, get a single printer by name */
-       sharename = strdup(argv[0]);
+       sharename = SMB_STRDUP(argv[0]);
 
        if (!net_spoolss_open_printer_ex(cli, mem_ctx, sharename,
                        MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd)) 
@@ -2299,7 +2299,7 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid, const
                }
 
                /* copy devmode (info level 2) */
-               ctr_dst.printers_2->devmode = talloc_memdup(mem_ctx, 
+               ctr_dst.printers_2->devmode = TALLOC_MEMDUP(mem_ctx, 
                        ctr_enum.printers_2[i].devmode, sizeof(DEVICEMODE));
 
                /* do not copy security descriptor (we have another command for that) */
@@ -2461,7 +2461,7 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid, const
 
                                        value.type = REG_SZ;
                                        value.size = data.uni_str_len * 2;
-                                       value.data_p = talloc_memdup(mem_ctx, data.buffer, value.size);
+                                       value.data_p = TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
 
                                        if (opt_verbose) 
                                                display_reg_value(subkey, value);
index 2e7c053ac3fb97bcf28ac36dd94e18dbfac44966..b31087927a14c4401679ce1521ab58283bc344ac 100644 (file)
@@ -595,7 +595,7 @@ fetch_group_mem_info(uint32 rid, SAM_GROUP_MEM_INFO *delta)
                return NT_STATUS_NO_MEMORY;
        }
 
-       nt_members = talloc_zero(t, sizeof(char *) * delta->num_members);
+       nt_members = TALLOC_ZERO_ARRAY(t, char *, delta->num_members);
 
        for (i=0; i<delta->num_members; i++) {
                NTSTATUS nt_status;
index 21e6bffb2cfe6b3766a3b46efea2fac098d9a636..d5845972730a3af914170d9402d063d71726131c 100644 (file)
@@ -129,8 +129,7 @@ static int collect_pid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
                return 0;
 
        ids->num_entries += 1;
-       ids->entries = Realloc(ids->entries,
-                              sizeof(struct sessionid) * ids->num_entries);
+       ids->entries = SMB_REALLOC_ARRAY(ids->entries, struct sessionid, ids->num_entries);
        ids->entries[ids->num_entries-1] = sessionid;
 
        return 0;
index 3d515238316b03274b490e27503a1ba9ce0968c6..3d55c373558bd443a68a07aae57331e152746d60 100644 (file)
@@ -238,7 +238,7 @@ static BOOL get_require_membership_sid(void) {
                return False;
        }
 
-       require_membership_of_sid = strdup(response.data.sid.sid);
+       require_membership_of_sid = SMB_STRDUP(response.data.sid.sid);
 
        if (require_membership_of_sid)
                return True;
@@ -378,7 +378,7 @@ NTSTATUS contact_winbind_auth_crap(const char *username,
        }
 
        if (flags & WBFLAG_PAM_UNIX_NAME) {
-               *unix_name = strdup((char *)response.extra_data);
+               *unix_name = SMB_STRDUP((char *)response.extra_data);
                if (!*unix_name) {
                        free_response(&response);
                        return NT_STATUS_NO_MEMORY;
@@ -552,7 +552,7 @@ static void manage_squid_ntlmssp_request(enum stdio_helper_mode stdio_helper_mod
        if ((strncmp(buf, "PW ", 3) == 0)) {
                /* The calling application wants us to use a local password (rather than winbindd) */
 
-               opt_password = strndup((const char *)request.data, request.length);
+               opt_password = SMB_STRNDUP((const char *)request.data, request.length);
 
                if (opt_password == NULL) {
                        DEBUG(1, ("Out of memory\n"));
@@ -634,7 +634,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo
        if (strncmp(buf, "PW ", 3) == 0) {
                /* We asked for a password and obviously got it :-) */
 
-               opt_password = strndup((const char *)request.data, request.length);
+               opt_password = SMB_STRNDUP((const char *)request.data, request.length);
 
                if (opt_password == NULL) {
                        DEBUG(1, ("Out of memory\n"));
@@ -753,7 +753,7 @@ static void offer_gss_spnego_mechs(void) {
 
        /* Server negTokenInit (mech offerings) */
        spnego.type = SPNEGO_NEG_TOKEN_INIT;
-       spnego.negTokenInit.mechTypes = smb_xmalloc(sizeof(char *) * 3);
+       spnego.negTokenInit.mechTypes = SMB_XMALLOC_ARRAY(char *, 3);
 #ifdef HAVE_KRB5
        spnego.negTokenInit.mechTypes[0] = smb_xstrdup(OID_KERBEROS5_OLD);
        spnego.negTokenInit.mechTypes[1] = smb_xstrdup(OID_NTLMSSP);
@@ -883,7 +883,7 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
                                  request.negTokenInit.mechToken.length);
 
                        response.type = SPNEGO_NEG_TOKEN_TARG;
-                       response.negTokenTarg.supportedMech = strdup(OID_NTLMSSP);
+                       response.negTokenTarg.supportedMech = SMB_STRDUP(OID_NTLMSSP);
                        response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
 
                        status = ntlmssp_update(ntlmssp_state,
@@ -906,7 +906,7 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
                        }
 
                        response.type = SPNEGO_NEG_TOKEN_TARG;
-                       response.negTokenTarg.supportedMech = strdup(OID_KERBEROS5_OLD);
+                       response.negTokenTarg.supportedMech = SMB_STRDUP(OID_KERBEROS5_OLD);
                        response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
                        response.negTokenTarg.responseToken = data_blob(NULL, 0);
 
@@ -930,8 +930,8 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
                                }
 
                                *domain++ = '\0';
-                               domain = strdup(domain);
-                               user = strdup(principal);
+                               domain = SMB_STRDUP(domain);
+                               user = SMB_STRDUP(principal);
 
                                data_blob_free(&ap_rep);
                                data_blob_free(&auth_data);
@@ -964,12 +964,12 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode,
                                               &response.negTokenTarg.responseToken);
 
                response.type = SPNEGO_NEG_TOKEN_TARG;
-               response.negTokenTarg.supportedMech = strdup(OID_NTLMSSP);
+               response.negTokenTarg.supportedMech = SMB_STRDUP(OID_NTLMSSP);
                response.negTokenTarg.mechListMIC = data_blob(NULL, 0);
 
                if (NT_STATUS_IS_OK(status)) {
-                       user = strdup(ntlmssp_state->user);
-                       domain = strdup(ntlmssp_state->domain);
+                       user = SMB_STRDUP(ntlmssp_state->user);
+                       domain = SMB_STRDUP(ntlmssp_state->domain);
                        ntlmssp_end(&ntlmssp_state);
                }
        }
@@ -1155,7 +1155,7 @@ static BOOL manage_client_krb5_init(SPNEGO_DATA spnego)
                return False;
        }
 
-       principal = malloc(spnego.negTokenInit.mechListMIC.length+1);
+       principal = SMB_MALLOC(spnego.negTokenInit.mechListMIC.length+1);
 
        if (principal == NULL) {
                DEBUG(1, ("Could not malloc principal\n"));
@@ -1266,7 +1266,7 @@ static void manage_gss_spnego_client_request(enum stdio_helper_mode stdio_helper
 
                /* We asked for a password and obviously got it :-) */
 
-               opt_password = strndup((const char *)request.data, request.length);
+               opt_password = SMB_STRNDUP((const char *)request.data, request.length);
                
                if (opt_password == NULL) {
                        DEBUG(1, ("Out of memory\n"));
index 1eb6a135c517d5ed910b9f5760184bd622d88526..2e8d0d6d96f1f3a851fb846b8331c1d2caea77e4 100644 (file)
@@ -429,10 +429,10 @@ static int new_user (struct pdb_context *in, const char *username,
        }
 
        staticpass = getpass("new password:");
-       password1 = strdup(staticpass);
+       password1 = SMB_STRDUP(staticpass);
        memset(staticpass, 0, strlen(staticpass));
        staticpass = getpass("retype new password:");
-       password2 = strdup(staticpass);
+       password2 = SMB_STRDUP(staticpass);
        memset(staticpass, 0, strlen(staticpass));
        if (strcmp (password1, password2)) {
                fprintf (stderr, "Passwords does not match!\n");
index b12bf4d35d84fd361987bb128c139734e1095039..048ec8dc3ef4cb768adf402ec101500e896bbb68 100644 (file)
@@ -325,7 +325,7 @@ static BOOL add_ace(SEC_ACL **the_acl, SEC_ACE *ace)
                return True;
        }
 
-       aces = calloc(1+(*the_acl)->num_aces,sizeof(SEC_ACE));
+       aces = SMB_CALLOC_ARRAY(SEC_ACE, 1+(*the_acl)->num_aces);
        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);
@@ -353,7 +353,7 @@ static SEC_DESC *sec_desc_parse(char *str)
                }
 
                if (strncmp(tok,"OWNER:", 6) == 0) {
-                       owner_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       owner_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!owner_sid ||
                            !StringToSid(owner_sid, tok+6)) {
                                printf("Failed to parse owner sid\n");
@@ -363,7 +363,7 @@ static SEC_DESC *sec_desc_parse(char *str)
                }
 
                if (strncmp(tok,"GROUP:", 6) == 0) {
-                       grp_sid = (DOM_SID *)calloc(1, sizeof(DOM_SID));
+                       grp_sid = SMB_CALLOC_ARRAY(DOM_SID, 1);
                        if (!grp_sid ||
                            !StringToSid(grp_sid, tok+6)) {
                                printf("Failed to parse group sid\n");
index cbe1bd448f8b9ed2bb240590025d83a339b578df..00f6a74f2f28d81ebbc412c1c0d0f5b3b038b282 100644 (file)
@@ -51,7 +51,7 @@ static void add_name(const char *machine_name, uint32 server_type,
         struct name_list **name_list = (struct name_list **)state;
         struct name_list *new_name;
 
-        new_name = (struct name_list *)malloc(sizeof(struct name_list));
+        new_name = SMB_MALLOC_P(struct name_list);
 
         if (!new_name)
                 return;
index cf309c364e252aacdc3b9f723bb08e04d88093bd..937e603f8cd99848787fddf636b2b40c19447bad 100644 (file)
@@ -59,7 +59,7 @@ static char *grab_line(FILE *f, int *cl)
                        char *ret2;
                        if (len == 0) len = 1024;
                        else len *= 2;
-                       ret2 = (char *)Realloc(ret, len);
+                       ret2 = (char *)SMB_REALLOC(ret, len);
                        if (!ret2) return ret;
                        ret = ret2;
                }
@@ -135,8 +135,8 @@ void cgi_load_variables(void)
                        
                        *p = 0;
                        
-                       variables[num_variables].name = strdup(line);
-                       variables[num_variables].value = strdup(p+1);
+                       variables[num_variables].name = SMB_STRDUP(line);
+                       variables[num_variables].value = SMB_STRDUP(p+1);
 
                        SAFE_FREE(line);
                        
@@ -170,8 +170,8 @@ void cgi_load_variables(void)
                        
                        *p = 0;
                        
-                       variables[num_variables].name = strdup(tok);
-                       variables[num_variables].value = strdup(p+1);
+                       variables[num_variables].name = SMB_STRDUP(tok);
+                       variables[num_variables].value = SMB_STRDUP(p+1);
 
                        if (!variables[num_variables].name || 
                            !variables[num_variables].value)
@@ -205,13 +205,13 @@ void cgi_load_variables(void)
                               variables[i].name, -1, 
                               dest, sizeof(dest), True);
                free(variables[i].name);
-               variables[i].name = strdup(dest);
+               variables[i].name = SMB_STRDUP(dest);
 
                convert_string(CH_UTF8, CH_UNIX, 
                               variables[i].value, -1,
                               dest, sizeof(dest), True);
                free(variables[i].value);
-               variables[i].value = strdup(dest);
+               variables[i].value = SMB_STRDUP(dest);
        }
 }
 
@@ -366,7 +366,7 @@ static BOOL cgi_handle_authorization(char *line)
                        become_user_permanently(pass->pw_uid, pass->pw_gid);
                        
                        /* Save the users name */
-                       C_user = strdup(user);
+                       C_user = SMB_STRDUP(user);
                        passwd_free(&pass);
                        return True;
                }
@@ -530,11 +530,11 @@ void cgi_setup(const char *rootdir, int auth_required)
                if (line[0] == '\r' || line[0] == '\n') break;
                if (strnequal(line,"GET ", 4)) {
                        got_request = True;
-                       url = strdup(&line[4]);
+                       url = SMB_STRDUP(&line[4]);
                } else if (strnequal(line,"POST ", 5)) {
                        got_request = True;
                        request_post = 1;
-                       url = strdup(&line[5]);
+                       url = SMB_STRDUP(&line[5]);
                } else if (strnequal(line,"PUT ", 4)) {
                        got_request = True;
                        cgi_setup_error("400 Bad Request", "",
index aa285745d6cf7fbab094b8948bec164582b08202..ca671822d87a7f3301049fba276e55addd735b8c 100644 (file)
@@ -85,7 +85,7 @@ void web_set_lang(const char *lang_string)
                count++;
                lang_num++;
        }
-       pl = (struct pri_list *)malloc(sizeof(struct pri_list) * lang_num);
+       pl = SMB_MALLOC_ARRAY(struct pri_list, lang_num);
        for (i = 0; i < lang_num; i++) {
                char *pri_code;
                if ((pri_code=strstr(lang_list[i], ";q="))) {
@@ -95,7 +95,7 @@ void web_set_lang(const char *lang_string)
                } else {
                        pl[i].pri = 1;
                }
-               pl[i].string = strdup(lang_list[i]);
+               pl[i].string = SMB_STRDUP(lang_list[i]);
        }
        str_list_free(&lang_list);
 
index 953222c2fc10acea31fc94041f7b1dcff4c4daa0..57b5d0f7b73ffd1d414a3b54a7071ab69c7cbf0a 100644 (file)
@@ -61,14 +61,14 @@ static void addPid2Machine (pid_t pid, char *machine)
        if (PID_or_Machine) {
                PIDMAP *newmap;
 
-               if ((newmap = (PIDMAP *) malloc (sizeof (PIDMAP))) == NULL) {
+               if ((newmap = SMB_MALLOC_P(PIDMAP)) == NULL) {
                        /* XXX need error message for this?
                           if malloc fails, PID is always shown */
                        return;
                }
 
                newmap->pid = pid;
-               newmap->machine = strdup (machine);
+               newmap->machine = SMB_STRDUP(machine);
 
                DLIST_ADD(pidmap, newmap);
        }