diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-08-30 04:30:57 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-08-30 04:30:57 +0000 |
commit | c021867feea2a7a1bc29ec89d7625754220f0431 (patch) | |
tree | 204d78c39d127927e47ee6badc7fa5254bc42ecd /source3 | |
parent | 1778debff146423e3543d40c2fe8413a34888a27 (diff) | |
download | samba-c021867feea2a7a1bc29ec89d7625754220f0431.tar.gz samba-c021867feea2a7a1bc29ec89d7625754220f0431.tar.bz2 samba-c021867feea2a7a1bc29ec89d7625754220f0431.zip |
changed the size of a char array in the userdata_struct from 1 to 16
to account for padding/alignment issues. Eventually I'd like to find a
way to get rid of this construct altogether as it is a bit error
prone and hard to debug.
also added a new macro:
ZERO_STRUCTP() that takes a pointer to a structure and zeros the
structure. Used in nmbd to zero allocated structures before freeing
them to try to catch bugs a bit faster.
(This used to be commit d3dda65d5177154e2128f50ca3dd34e8e13b6b08)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/nameserv.h | 2 | ||||
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/include/smb.h | 9 |
3 files changed, 11 insertions, 1 deletions
diff --git a/source3/include/nameserv.h b/source3/include/nameserv.h index 80d9667d1c..fe00a1415d 100644 --- a/source3/include/nameserv.h +++ b/source3/include/nameserv.h @@ -278,7 +278,7 @@ struct userdata_struct { userdata_copy_fn copy_fn; userdata_free_fn free_fn; unsigned int userdata_len; - char data[1]; + char data[16]; /* 16 is to ensure alignment/padding on all systems */ }; struct response_record; diff --git a/source3/include/proto.h b/source3/include/proto.h index 6594ac6143..991e4f3e31 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -356,6 +356,7 @@ char *tab_depth(int depth); char *sid_to_string(pstring sidstr_out, DOM_SID *sid); BOOL string_to_sid(DOM_SID *sidout, char *sidstr); int str_checksum(char *s); +void zero_free(void *p, int size); /*The following definitions come from libsmb/clientgen.c */ diff --git a/source3/include/smb.h b/source3/include/smb.h index b615d09708..90435b208e 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -1569,8 +1569,17 @@ extern int unix_ERR_code; #define CMD_REPLY 0x8000 /* useful macros */ + +/* zero a structure */ #define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) + +/* zero a structure given a pointer to the structure */ +#define ZERO_STRUCTP(x) memset((char *)(x), 0, sizeof(*(x))) + +/* zero an array - note that sizeof(array) must work - ie. it must not be a + pointer */ #define ZERO_ARRAY(x) memset((char *)(x), 0, sizeof(x)) + #define SMB_ASSERT(b) ((b)?(void)0: \ (DEBUG(0,("PANIC: assert failed at %s(%d)\n", \ __FILE__, __LINE__)), smb_panic("assert failed"))) |