[PATCH] Some fixes detected by Undefined Sanitizer
Andreas Schneider
asn at samba.org
Thu Nov 22 16:07:22 UTC 2018
On Thursday, 22 November 2018 16:26:45 CET Andreas Schneider via samba-
technical wrote:
> On Wednesday, 21 November 2018 11:20:44 CET Andreas Schneider via samba-
>
> technical wrote:
> > Hi,
> >
> > see attached. Review and comments are welcome. Please push if OK.
>
> Here is an updated patchset with more patches. I have more in the queue, but
> I can tell you, there be dragons!
>
> https://gitlab.com/samba-team/devel/samba/pipelines/37563706
I've removed one patch which fixed some tdb stuff. This needs more fixing by
the callers first.
New pipeline:
https://gitlab.com/samba-team/devel/samba/pipelines/37566650
Andreas
--
Andreas Schneider asn at samba.org
Samba Team www.samba.org
GPG-ID: 8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D
-------------- next part --------------
>From 3c6beeb208039ab27c1d015490a6009104a0498a Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Fri, 16 Nov 2018 16:07:42 +0100
Subject: [PATCH 01/12] s4:bind_dlz: Only copy the dn once
../source4/dns_server/dlz_bind9.c:1132:4: error: 'dn' may be used uninitialized in this function [-Werror=maybe-uninitialized]
state->log(ISC_LOG_INFO, "failed to find dnsRecord for %s",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ldb_dn_get_linearized(dn));
~~~~~~~~~~~~~~~~~~~~~~~~~~
Found by Undefined Sanitizer.
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source4/dns_server/dlz_bind9.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/source4/dns_server/dlz_bind9.c b/source4/dns_server/dlz_bind9.c
index 43f3e57c789..8f02b07856f 100644
--- a/source4/dns_server/dlz_bind9.c
+++ b/source4/dns_server/dlz_bind9.c
@@ -1060,20 +1060,20 @@ _PUBLIC_ isc_result_t dlz_allnodes(const char *zone, void *dbdata,
struct dlz_bind9_data *state = talloc_get_type_abort(dbdata, struct dlz_bind9_data);
const char *attrs[] = { "dnsRecord", NULL };
int ret = LDB_SUCCESS, i, j;
- struct ldb_dn *dn;
+ struct ldb_dn *dn = NULL;
struct ldb_result *res;
TALLOC_CTX *tmp_ctx = talloc_new(state);
struct ldb_val zone_name_val = data_blob_string_const(zone);
+ dn = ldb_dn_copy(tmp_ctx, ldb_get_default_basedn(state->samdb));
+ if (dn == NULL) {
+ talloc_free(tmp_ctx);
+ return ISC_R_NOMEMORY;
+ }
+
for (i=0; zone_prefixes[i]; i++) {
const char *casefold;
- dn = ldb_dn_copy(tmp_ctx, ldb_get_default_basedn(state->samdb));
- if (dn == NULL) {
- talloc_free(tmp_ctx);
- return ISC_R_NOMEMORY;
- }
-
/*
* This dance ensures that it is not possible to put
* (eg) an extra DC=x, into the DNS name being
--
2.19.1
>From 0e9aacb676b1c339b6eae01318f963347c5c6a15 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Fri, 16 Nov 2018 18:25:58 +0100
Subject: [PATCH 02/12] s4:torture: Initialize pointers in libnetapi user test
Found by Undefined Sanitizer.
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source4/torture/libnetapi/libnetapi_user.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source4/torture/libnetapi/libnetapi_user.c b/source4/torture/libnetapi/libnetapi_user.c
index e925725e5f0..134b4e8b9c0 100644
--- a/source4/torture/libnetapi/libnetapi_user.c
+++ b/source4/torture/libnetapi/libnetapi_user.c
@@ -271,8 +271,8 @@ static NET_API_STATUS test_netusergetgroups(struct torture_context *tctx,
uint8_t *buffer = NULL;
int i;
- struct GROUP_USERS_INFO_0 *i0;
- struct GROUP_USERS_INFO_1 *i1;
+ struct GROUP_USERS_INFO_0 *i0 = NULL;
+ struct GROUP_USERS_INFO_1 *i1 = NULL;
torture_comment(tctx, "Testing NetUserGetGroups level %d\n", level);
--
2.19.1
>From 8bba8f546ec9faf2d450e425f10d80bcb1a432b0 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Fri, 16 Nov 2018 20:02:26 +0100
Subject: [PATCH 03/12] s3:tests: Initialize pointers with NULL in netdisplay
test
Found by Undefined Sanitizer
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source3/lib/netapi/tests/netdisplay.c | 6 +++---
source3/lib/netapi/tests/netuser.c | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/source3/lib/netapi/tests/netdisplay.c b/source3/lib/netapi/tests/netdisplay.c
index 090792cec2f..d7967fa4150 100644
--- a/source3/lib/netapi/tests/netdisplay.c
+++ b/source3/lib/netapi/tests/netdisplay.c
@@ -39,9 +39,9 @@ static NET_API_STATUS test_netquerydisplayinformation(const char *hostname,
uint32_t idx = 0;
int i;
- struct NET_DISPLAY_USER *user;
- struct NET_DISPLAY_GROUP *group;
- struct NET_DISPLAY_MACHINE *machine;
+ struct NET_DISPLAY_USER *user = NULL;
+ struct NET_DISPLAY_GROUP *group = NULL;
+ struct NET_DISPLAY_MACHINE *machine = NULL;
printf("testing NetQueryDisplayInformation level %d\n", level);
diff --git a/source3/lib/netapi/tests/netuser.c b/source3/lib/netapi/tests/netuser.c
index de5f0a102d9..ad2bb53f18c 100644
--- a/source3/lib/netapi/tests/netuser.c
+++ b/source3/lib/netapi/tests/netuser.c
@@ -265,8 +265,8 @@ static NET_API_STATUS test_netusergetgroups(const char *hostname,
uint8_t *buffer = NULL;
int i;
- struct GROUP_USERS_INFO_0 *i0;
- struct GROUP_USERS_INFO_1 *i1;
+ struct GROUP_USERS_INFO_0 *i0 = NULL;
+ struct GROUP_USERS_INFO_1 *i1 = NULL;
printf("testing NetUserGetGroups level %d\n", level);
--
2.19.1
>From 19fd0f0fd688ef246421b3c0b7ae3a5b1bbf5404 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Tue, 20 Nov 2018 10:37:01 +0100
Subject: [PATCH 04/12] lib:util: Always include unistd.h for setgroups
This is needed to pass configure checks
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/util/setid.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/util/setid.c b/lib/util/setid.c
index eb7511083f0..10014618def 100644
--- a/lib/util/setid.c
+++ b/lib/util/setid.c
@@ -34,6 +34,9 @@
#include <sys/types.h>
#include <errno.h>
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
#ifdef HAVE_SYS_PRIV_H
#include <sys/priv.h>
#endif
@@ -57,9 +60,6 @@ int samba_setgroups(size_t setlen, const gid_t *gidset);
#endif
#if defined(HAVE_LINUX_THREAD_CREDENTIALS)
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
#if defined(HAVE_SYSCALL_H)
#include <syscall.h>
#endif
--
2.19.1
>From e40be3e6e863f0b80522ea26a5c036070c2307be Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Tue, 20 Nov 2018 10:39:28 +0100
Subject: [PATCH 05/12] s3:lib: Do not redefine bool and use stdbool.h
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source3/lib/util_sec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source3/lib/util_sec.c b/source3/lib/util_sec.c
index 703c522d77b..94082697def 100644
--- a/source3/lib/util_sec.c
+++ b/source3/lib/util_sec.c
@@ -28,6 +28,7 @@
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
+#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
@@ -42,7 +43,6 @@
#define DEBUG(x, y) printf y
#define smb_panic(x) exit(1)
-#define bool int
#endif
/* are we running as non-root? This is used by the regresison test code,
--
2.19.1
>From 1fb1330009de87ea491b61a0705f3d4ec3372436 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 09:22:38 +0100
Subject: [PATCH 06/12] lib:crypto: Fix undefined behavior in md4
runtime error: left shift of 145 by 24 places cannot be represented in type 'int'
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/crypto/md4.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/crypto/md4.c b/lib/crypto/md4.c
index 7eb6070cd44..831fe32ecb8 100644
--- a/lib/crypto/md4.c
+++ b/lib/crypto/md4.c
@@ -112,8 +112,10 @@ static void copy64(uint32_t *M, const uint8_t *in)
int i;
for (i=0;i<16;i++)
- M[i] = (in[i*4+3]<<24) | (in[i*4+2]<<16) |
- (in[i*4+1]<<8) | (in[i*4+0]<<0);
+ M[i] = ((uint32_t)in[i*4+3] << 24) |
+ ((uint32_t)in[i*4+2] << 16) |
+ ((uint32_t)in[i*4+1] << 8) |
+ ((uint32_t)in[i*4+0] << 0);
}
static void copy4(uint8_t *out, uint32_t x)
--
2.19.1
>From 49740c99d17de9b661164c4f2875391d19a11970 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 13:57:18 +0100
Subject: [PATCH 07/12] s3:lib: Fix undefined behavior in messages_dgm
source3/lib/messages_dgm.c:1290:7: runtime error: variable length array
bound evaluates to non-positive value 0
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source3/lib/messages_dgm.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/source3/lib/messages_dgm.c b/source3/lib/messages_dgm.c
index daaad9619e0..af12be8d82e 100644
--- a/source3/lib/messages_dgm.c
+++ b/source3/lib/messages_dgm.c
@@ -1249,6 +1249,7 @@ static void messaging_dgm_read_handler(struct tevent_context *ev,
size_t msgbufsize = msghdr_prep_recv_fds(NULL, NULL, 0, INT8_MAX);
uint8_t msgbuf[msgbufsize];
uint8_t buf[MESSAGING_DGM_FRAGMENT_LENGTH];
+ size_t num_fds;
messaging_dgm_validate(ctx);
@@ -1284,8 +1285,12 @@ static void messaging_dgm_read_handler(struct tevent_context *ev,
return;
}
- {
- size_t num_fds = msghdr_extract_fds(&msg, NULL, 0);
+ num_fds = msghdr_extract_fds(&msg, NULL, 0);
+ if (num_fds == 0) {
+ int fds[1];
+
+ messaging_dgm_recv(ctx, ev, buf, received, fds, 0);
+ } else {
size_t i;
int fds[num_fds];
@@ -1303,7 +1308,6 @@ static void messaging_dgm_read_handler(struct tevent_context *ev,
messaging_dgm_recv(ctx, ev, buf, received, fds, num_fds);
}
-
}
static int messaging_dgm_in_msg_destructor(struct messaging_dgm_in_msg *m)
--
2.19.1
>From c28e7330504b11769e311a05dd7ae786381b6ac1 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 14:45:20 +0100
Subject: [PATCH 08/12] lib:util: Fix undefined behavior in asn1 parser
lib/util/asn1.c:969 runtime error: left shift of negative value -1
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/util/asn1.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/lib/util/asn1.c b/lib/util/asn1.c
index d3b46aac857..60ddfa09bcf 100644
--- a/lib/util/asn1.c
+++ b/lib/util/asn1.c
@@ -953,21 +953,24 @@ bool asn1_read_ContextSimple(struct asn1_data *data, TALLOC_CTX *mem_ctx, uint8_
bool asn1_read_implicit_Integer(struct asn1_data *data, int *i)
{
uint8_t b;
+ uint32_t x = 0;
bool first_byte = true;
+
*i = 0;
while (!data->has_error && asn1_tag_remaining(data)>0) {
if (!asn1_read_uint8(data, &b)) return false;
if (first_byte) {
if (b & 0x80) {
- /* Number is negative.
- Set i to -1 for sign extend. */
- *i = -1;
+ /* Number is negative. */
+ x = (uint32_t)-1;
}
first_byte = false;
}
- *i = (*i << 8) + b;
+ x = (x << 8) + b;
}
+ *i = (int)x;
+
return !data->has_error;
}
--
2.19.1
>From b01dcbaaf60b865efc734bc3a8c0b7a09b4c5a39 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 14:53:21 +0100
Subject: [PATCH 09/12] lib:util: Fix undefined behavior in idtree
lib/util/idtree.c:84 runtime error: left shift of 1 by 31 places cannot
be represented in type 'int'
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/util/idtree.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/util/idtree.c b/lib/util/idtree.c
index 72266a6a62c..d72ddfbc538 100644
--- a/lib/util/idtree.c
+++ b/lib/util/idtree.c
@@ -50,9 +50,9 @@
#define MAX_LEVEL (MAX_ID_SHIFT + IDR_BITS - 1) / IDR_BITS
#define IDR_FREE_MAX MAX_LEVEL + MAX_LEVEL
-#define set_bit(bit, v) (v) |= (1<<(bit))
-#define clear_bit(bit, v) (v) &= ~(1<<(bit))
-#define test_bit(bit, v) ((v) & (1<<(bit)))
+#define set_bit(bit, v) (v) |= (1U<<(bit))
+#define clear_bit(bit, v) (v) &= ~(1U<<(bit))
+#define test_bit(bit, v) ((v) & (1U<<(bit)))
struct idr_layer {
uint32_t bitmap;
--
2.19.1
>From 772f2e87e86775dfd515515777317f483f9112ab Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 15:06:42 +0100
Subject: [PATCH 10/12] lib:util: Fix undefined behavior in bitmap.c
lib/util/bitmap.c:77: runtime error: left shift of 1 by 31 places cannot
be represented in type 'int'
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/util/bitmap.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/util/bitmap.c b/lib/util/bitmap.c
index 63963356f98..12cdfe4d16a 100644
--- a/lib/util/bitmap.c
+++ b/lib/util/bitmap.c
@@ -74,7 +74,7 @@ bool bitmap_set(struct bitmap *bm, unsigned i)
i, bm->n));
return false;
}
- bm->b[i/32] |= (1<<(i%32));
+ bm->b[i/32] |= (1U<<(i%32));
return true;
}
@@ -88,7 +88,7 @@ bool bitmap_clear(struct bitmap *bm, unsigned i)
i, bm->n));
return false;
}
- bm->b[i/32] &= ~(1<<(i%32));
+ bm->b[i/32] &= ~(1U<<(i%32));
return true;
}
@@ -98,7 +98,7 @@ query a bit in a bitmap
bool bitmap_query(struct bitmap *bm, unsigned i)
{
if (i >= bm->n) return false;
- if (bm->b[i/32] & (1<<(i%32))) {
+ if (bm->b[i/32] & (1U<<(i%32))) {
return true;
}
return false;
--
2.19.1
>From 40450f702b6a86b3e1d23cc616efc8d485b77a78 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 15:11:09 +0100
Subject: [PATCH 11/12] lib:compression: Fix undefined behavior in lzxpress
lib/compression/lzxpress.c:228 runtime error: store to misaligned
address 0x5631d53ca9fe for type 'uint32_t', which requires 4 byte
alignment
Signed-off-by: Andreas Schneider <asn at samba.org>
---
lib/compression/lzxpress.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/compression/lzxpress.c b/lib/compression/lzxpress.c
index a4ded7e4555..024aba4c2ce 100644
--- a/lib/compression/lzxpress.c
+++ b/lib/compression/lzxpress.c
@@ -225,7 +225,7 @@ ssize_t lzxpress_compress(const uint8_t *uncompressed,
for (; (indic_bit % 32) != 0; indic_bit++)
indic |= 0 << (32 - ((indic_bit % 32) + 1));
- *(uint32_t *)&compressed[compressed_pos] = 0;
+ SIVAL(compressed, compressed_pos, 0);
SIVAL(indic_pos, 0, indic);
compressed_pos += sizeof(uint32_t);
}
--
2.19.1
>From 7d25cf92c31e185a604b30bb927ff56471a9e9f6 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at samba.org>
Date: Thu, 22 Nov 2018 15:01:44 +0100
Subject: [PATCH 12/12] 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 at samba.org>
---
librpc/ndr/libndr.h | 66 ++++++++++++++++++++++-----------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index de93893be19..c31496fe1dc 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -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_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_BIGENDIAN (1U<<0)
+#define LIBNDR_FLAG_NOALIGN (1U<<1)
+
+#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)
--
2.19.1
More information about the samba-technical
mailing list