diff options
author | Jeremy Allison <jra@samba.org> | 2005-12-03 06:46:46 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:05:42 -0500 |
commit | d1f91f7c723733113b4e9792042101c80dfc064c (patch) | |
tree | 51943d49138b8e91334756ce602849ed27bbb1c5 /source3/rpc_parse/parse_prs.c | |
parent | 03b77baa6f20b8eaa450e67b0e0e1ad6f5b686be (diff) | |
download | samba-d1f91f7c723733113b4e9792042101c80dfc064c.tar.gz samba-d1f91f7c723733113b4e9792042101c80dfc064c.tar.xz samba-d1f91f7c723733113b4e9792042101c80dfc064c.zip |
r12043: It's amazing the warnings you find when compiling on a 64-bit
box with gcc4 and -O6...
Fix a bunch of C99 dereferencing type-punned pointer will break
strict-aliasing rules errors. Also added prs_int32 (not uint32...)
as it's needed in one place. Find places where prs_uint32 was being
used to marshall/unmarshall a time_t (a big no no on 64-bits).
More warning fixes to come.
Thanks to Volker for nudging me to compile like this.
Jeremy.
(This used to be commit c65b752604f8f58abc4e7ae8514dc2c7f086271c)
Diffstat (limited to 'source3/rpc_parse/parse_prs.c')
-rw-r--r-- | source3/rpc_parse/parse_prs.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c index 77f0e6d5c8..7c84ee800b 100644 --- a/source3/rpc_parse/parse_prs.c +++ b/source3/rpc_parse/parse_prs.c @@ -708,6 +708,35 @@ BOOL prs_uint32(const char *name, prs_struct *ps, int depth, uint32 *data32) } /******************************************************************* + Stream an int32. + ********************************************************************/ + +BOOL prs_int32(const char *name, prs_struct *ps, int depth, int32 *data32) +{ + char *q = prs_mem_get(ps, sizeof(int32)); + if (q == NULL) + return False; + + if (UNMARSHALLING(ps)) { + if (ps->bigendian_data) + *data32 = RIVALS(q,0); + else + *data32 = IVALS(q,0); + } else { + if (ps->bigendian_data) + RSIVALS(q,0,*data32); + else + SIVALS(q,0,*data32); + } + + DEBUG(5,("%s%04x %s: %08x\n", tab_depth(depth), ps->data_offset, name, *data32)); + + ps->data_offset += sizeof(int32); + + return True; +} + +/******************************************************************* Stream a NTSTATUS ********************************************************************/ |