1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

librpc:ndr: Fix undefined behavior in ndr.c

librpc/ndr/ndr.c:1430 runtime error: left shift of 1 by 31 places cannot
be represented in type 'int'

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>

Autobuild-User(master): Gary Lockyer <gary@samba.org>
Autobuild-Date(master): Fri Nov 23 01:23:09 CET 2018 on sn-devel-144
This commit is contained in:
Andreas Schneider 2018-11-22 15:01:44 +01:00 committed by Gary Lockyer
parent aab5034a9d
commit 6f48bc840c

View File

@ -118,21 +118,21 @@ struct ndr_print {
bool print_secrets;
};
#define LIBNDR_FLAG_BIGENDIAN (1<<0)
#define LIBNDR_FLAG_NOALIGN (1<<1)
#define LIBNDR_FLAG_BIGENDIAN (1U<<0)
#define LIBNDR_FLAG_NOALIGN (1U<<1)
#define LIBNDR_FLAG_STR_ASCII (1<<2)
#define LIBNDR_FLAG_STR_LEN4 (1<<3)
#define LIBNDR_FLAG_STR_SIZE4 (1<<4)
#define LIBNDR_FLAG_STR_NOTERM (1<<5)
#define LIBNDR_FLAG_STR_NULLTERM (1<<6)
#define LIBNDR_FLAG_STR_SIZE2 (1<<7)
#define LIBNDR_FLAG_STR_BYTESIZE (1<<8)
#define LIBNDR_FLAG_STR_CONFORMANT (1<<10)
#define LIBNDR_FLAG_STR_CHARLEN (1<<11)
#define LIBNDR_FLAG_STR_UTF8 (1<<12)
#define LIBNDR_FLAG_STR_RAW8 (1<<13)
#define LIBNDR_STRING_FLAGS (0 | \
#define LIBNDR_FLAG_STR_ASCII (1U<<2)
#define LIBNDR_FLAG_STR_LEN4 (1U<<3)
#define LIBNDR_FLAG_STR_SIZE4 (1U<<4)
#define LIBNDR_FLAG_STR_NOTERM (1U<<5)
#define LIBNDR_FLAG_STR_NULLTERM (1U<<6)
#define LIBNDR_FLAG_STR_SIZE2 (1U<<7)
#define LIBNDR_FLAG_STR_BYTESIZE (1U<<8)
#define LIBNDR_FLAG_STR_CONFORMANT (1U<<10)
#define LIBNDR_FLAG_STR_CHARLEN (1U<<11)
#define LIBNDR_FLAG_STR_UTF8 (1U<<12)
#define LIBNDR_FLAG_STR_RAW8 (1U<<13)
#define LIBNDR_STRING_FLAGS (0U | \
LIBNDR_FLAG_STR_ASCII | \
LIBNDR_FLAG_STR_LEN4 | \
LIBNDR_FLAG_STR_SIZE4 | \
@ -150,10 +150,10 @@ struct ndr_print {
* Mark an element as SECRET, it won't be printed by
* via ndr_print* unless NDR_PRINT_SECRETS is specified.
*/
#define LIBNDR_FLAG_IS_SECRET (1<<14)
#define LIBNDR_FLAG_IS_SECRET (1U<<14)
/* Disable string token compression */
#define LIBNDR_FLAG_NO_COMPRESSION (1<<15)
#define LIBNDR_FLAG_NO_COMPRESSION (1U<<15)
/*
* don't debug NDR_ERR_BUFSIZE failures,
@ -161,25 +161,25 @@ struct ndr_print {
*
* return NDR_ERR_INCOMPLETE_BUFFER instead.
*/
#define LIBNDR_FLAG_INCOMPLETE_BUFFER (1<<16)
#define LIBNDR_FLAG_INCOMPLETE_BUFFER (1U<<16)
/*
* This lets ndr_pull_subcontext_end() return
* NDR_ERR_UNREAD_BYTES.
*/
#define LIBNDR_FLAG_SUBCONTEXT_NO_UNREAD_BYTES (1<<17)
#define LIBNDR_FLAG_SUBCONTEXT_NO_UNREAD_BYTES (1U<<17)
/* set if relative pointers should *not* be marshalled in reverse order */
#define LIBNDR_FLAG_NO_RELATIVE_REVERSE (1<<18)
#define LIBNDR_FLAG_NO_RELATIVE_REVERSE (1U<<18)
/* set if relative pointers are marshalled in reverse order */
#define LIBNDR_FLAG_RELATIVE_REVERSE (1<<19)
#define LIBNDR_FLAG_RELATIVE_REVERSE (1U<<19)
#define LIBNDR_FLAG_REF_ALLOC (1<<20)
#define LIBNDR_FLAG_REMAINING (1<<21)
#define LIBNDR_FLAG_ALIGN2 (1<<22)
#define LIBNDR_FLAG_ALIGN4 (1<<23)
#define LIBNDR_FLAG_ALIGN8 (1<<24)
#define LIBNDR_FLAG_REF_ALLOC (1U<<20)
#define LIBNDR_FLAG_REMAINING (1U<<21)
#define LIBNDR_FLAG_ALIGN2 (1U<<22)
#define LIBNDR_FLAG_ALIGN4 (1U<<23)
#define LIBNDR_FLAG_ALIGN8 (1U<<24)
#define LIBNDR_ALIGN_FLAGS ( 0 | \
LIBNDR_FLAG_NOALIGN | \
@ -189,22 +189,22 @@ struct ndr_print {
LIBNDR_FLAG_ALIGN8 | \
0)
#define LIBNDR_PRINT_ARRAY_HEX (1<<25)
#define LIBNDR_PRINT_SET_VALUES (1<<26)
#define LIBNDR_PRINT_ARRAY_HEX (1U<<25)
#define LIBNDR_PRINT_SET_VALUES (1U<<26)
/* used to force a section of IDL to be little-endian */
#define LIBNDR_FLAG_LITTLE_ENDIAN (1<<27)
#define LIBNDR_FLAG_LITTLE_ENDIAN (1U<<27)
/* used to check if alignment padding is zero */
#define LIBNDR_FLAG_PAD_CHECK (1<<28)
#define LIBNDR_FLAG_PAD_CHECK (1U<<28)
#define LIBNDR_FLAG_NDR64 (1<<29)
#define LIBNDR_FLAG_NDR64 (1U<<29)
/* set if an object uuid will be present */
#define LIBNDR_FLAG_OBJECT_PRESENT (1<<30)
#define LIBNDR_FLAG_OBJECT_PRESENT (1U<<30)
/* set to avoid recursion in ndr_size_*() calculation */
#define LIBNDR_FLAG_NO_NDR_SIZE (1<<31)
#define LIBNDR_FLAG_NO_NDR_SIZE (1U<<31)
/* useful macro for debugging */
#define NDR_PRINT_DEBUG(type, p) ndr_print_debug((ndr_print_fn_t)ndr_print_ ##type, #p, p)