summaryrefslogtreecommitdiff
path: root/source3/include/rpc_misc.h
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1999-10-15 20:00:30 +0000
committerLuke Leighton <lkcl@samba.org>1999-10-15 20:00:30 +0000
commit003f7364fd54ccdd190d447e275b70b0f76e95f7 (patch)
tree6e5813745c5aff1966dee4a575a9f9842b10000a /source3/include/rpc_misc.h
parent65df690dcd78ce240e1e1789822e3d3f1c6ac36c (diff)
downloadsamba-003f7364fd54ccdd190d447e275b70b0f76e95f7.tar.gz
samba-003f7364fd54ccdd190d447e275b70b0f76e95f7.tar.bz2
samba-003f7364fd54ccdd190d447e275b70b0f76e95f7.zip
adding error checking in parsing code
(This used to be commit 4c98d71ebd3f1cdaef664d46c998c864af34632a)
Diffstat (limited to 'source3/include/rpc_misc.h')
-rw-r--r--source3/include/rpc_misc.h108
1 files changed, 88 insertions, 20 deletions
diff --git a/source3/include/rpc_misc.h b/source3/include/rpc_misc.h
index ae1e3bf7d8..ed8cbd96bb 100644
--- a/source3/include/rpc_misc.h
+++ b/source3/include/rpc_misc.h
@@ -28,39 +28,107 @@
* macros to wrap prs_xxxx routines.
*/
#define prs_uint8(name, ps, depth, data8) \
- if (!_prs_uint8(name, ps, depth, data8)) return False
+ if (!_prs_uint8(name, ps, depth, data8)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_uint16(name, ps, depth, data16) \
- if (!_prs_uint16(name, ps, depth, data16)) return False
-#define prs_hash1(ps, offset, sess_key) \
- if (!_prs_hash1(ps, offset, sess_key)) return False
+ if (!_prs_uint16(name, ps, depth, data16)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
+#define prs_hash1(x_ps, x_offset, x_sess_key) \
+ if (!_prs_hash1(x_ps, x_offset, x_sess_key)) \
+ {\
+ x_ps->offset = 0;\
+ return False;\
+ }
#define prs_uint32(name, ps, depth, data32) \
- if (!_prs_uint32(name, ps, depth, data32)) return False
+ if (!_prs_uint32(name, ps, depth, data32)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_uint8s(charmode, name, ps, depth, data8s, len) \
- if (!_prs_uint8s(charmode, name, ps, depth, data8s, len)) return False
+ if (!_prs_uint8s(charmode, name, ps, depth, data8s, len)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_uint16s(charmode, name, ps, depth, data16s, len) \
- if (!_prs_uint16s(charmode, name, ps, depth, data16s, len)) return False
+ if (!_prs_uint16s(charmode, name, ps, depth, data16s, len)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_uint32s(charmode, name, ps, depth, data32s, len) \
- if (!_prs_uint32s(charmode, name, ps, depth, data32s, len)) return False
+ if (!_prs_uint32s(charmode, name, ps, depth, data32s, len)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_buffer2(charmode, name, ps, depth, str) \
- if (!_prs_buffer2(charmode, name, ps, depth, str)) return False
+ if (!_prs_buffer2(charmode, name, ps, depth, str)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_string2(charmode, name, ps, depth, str) \
- if (!_prs_string2(charmode, name, ps, depth, str)) return False
+ if (!_prs_string2(charmode, name, ps, depth, str)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_unistr2(charmode, name, ps, depth, str) \
- if (!_prs_unistr2(charmode, name, ps, depth, str)) return False
+ if (!_prs_unistr2(charmode, name, ps, depth, str)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_unistr3(charmode, name, str, ps, depth) \
- if (!_prs_unistr3(charmode, name, str, ps, depth)) return False
+ if (!_prs_unistr3(charmode, name, str, ps, depth)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_unistr(name, ps, depth, str) \
- if (!_prs_unistr(name, ps, depth, str)) return False
+ if (!_prs_unistr(name, ps, depth, str)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#define prs_string(name, ps, depth, str, len, max_buf_size) \
- if (!_prs_string(name, ps, depth, str, len, max_buf_size)) return False
-#define prs_uint16_pre(name, ps, depth, data16, offset) \
- if (!_prs_uint16_pre(name, ps, depth, data16, offset)) return False
+ if (!_prs_string(name, ps, depth, str, len, max_buf_size)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
+#define prs_uint16_pre(x_name, x_ps, x_depth, x_data16, x_offset) \
+ if (!_prs_uint16_pre(x_name, x_ps, x_depth, x_data16, x_offset)) \
+ {\
+ x_ps->offset = 0;\
+ return False;\
+ }
#define prs_uint16_post(name, ps, depth, data16, ptr_uint16, data_size) \
- if (!_prs_uint16_post(name, ps, depth, data16, ptr_uint16, data_size)) return False
-#define prs_uint32_pre(name, ps, depth, data32, offset) \
- if (!_prs_uint32_pre(name, ps, depth, data32, offset)) return False
+ if (!_prs_uint16_post(name, ps, depth, data16, ptr_uint16, data_size)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
+#define prs_uint32_pre(x_name, x_ps, x_depth, x_data32, x_offset) \
+ if (!_prs_uint32_pre(x_name, x_ps, x_depth, x_data32, x_offset)) \
+ {\
+ x_ps->offset = 0;\
+ return False;\
+ }
#define prs_uint32_post(name, ps, depth, data32, ptr_uint32, data_size) \
- if (!_prs_uint32_post(name, ps, depth, data32, ptr_uint32, data_size)) return False
+ if (!_prs_uint32_post(name, ps, depth, data32, ptr_uint32, data_size)) \
+ {\
+ ps->offset = 0;\
+ return False;\
+ }
#include "rpc_dce.h"