[PATCH] Put base64.c on a dependency diet

Volker Lendecke Volker.Lendecke at SerNet.DE
Tue May 3 15:09:41 UTC 2016


Hi!

Review appreciated!

Thanks, Volker

-- 
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From 6fbf4d8d2d2bf188a782c2dea55e7924f406bb94 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 25 Mar 2016 21:43:20 +0100
Subject: [PATCH 1/6] lib: The base64 chars are by definition single-byte :-)

Remove a dependency on charcnv

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 lib/util/base64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/util/base64.c b/lib/util/base64.c
index bc78404..de26b5b 100644
--- a/lib/util/base64.c
+++ b/lib/util/base64.c
@@ -38,7 +38,7 @@ _PUBLIC_ DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const cha
 
 	n=i=0;
 
-	while (*s && (p=strchr_m(b64,*s))) {
+	while (*s && (p=strchr(b64,*s))) {
 		idx = (int)(p - b64);
 		byte_offset = (i*6)/8;
 		bit_offset = (i*6)%8;
-- 
1.9.1


From 5c34cdfd91e9221692c792af2ec493788acdc377 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 25 Mar 2016 21:43:57 +0100
Subject: [PATCH 2/6] lib: =0 and |= is equivalent to =

Just a small simplication I thought might be nice

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 lib/util/base64.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/util/base64.c b/lib/util/base64.c
index de26b5b..a4ce6fa 100644
--- a/lib/util/base64.c
+++ b/lib/util/base64.c
@@ -48,8 +48,7 @@ _PUBLIC_ DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const cha
 			n = byte_offset+1;
 		} else {
 			d[byte_offset] |= (idx >> (bit_offset-2));
-			d[byte_offset+1] = 0;
-			d[byte_offset+1] |= (idx << (8-(bit_offset-2))) & 0xFF;
+			d[byte_offset+1] = (idx << (8-(bit_offset-2))) & 0xFF;
 			n = byte_offset+2;
 		}
 		s++; i++;
-- 
1.9.1


From db05eb8f2fad59acf78dc0c86e9718d5c67b474b Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 3 May 2016 15:54:07 +0200
Subject: [PATCH 3/6] lib: Make callers of base64_encode_data_blob check for
 success

Quite a few callers already did check for !=NULL. With the current code this is
pointless due to a SMB_ASSERT in base64_encode_data_blob() itself. Make the
callers consistently check, so that we can remove SMB_ASSERT from base64.c.

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libnet/libnet_dssync_passdb.c   | 10 +++++++---
 source3/libnet/libnet_samsync_passdb.c  |  9 ++++++---
 source3/rpc_server/samr/srv_samr_util.c | 22 +++++++++++++++-------
 source3/utils/ntlm_auth.c               |  2 ++
 source4/utils/ntlm_auth.c               |  2 ++
 5 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/source3/libnet/libnet_dssync_passdb.c b/source3/libnet/libnet_dssync_passdb.c
index 5617776..62ce074 100644
--- a/source3/libnet/libnet_dssync_passdb.c
+++ b/source3/libnet/libnet_dssync_passdb.c
@@ -1240,10 +1240,14 @@ static NTSTATUS sam_account_from_object(struct samu *account,
 	}
 
 	if (userParameters.data) {
-		char *newstr;
+		char *newstr = NULL;
 		old_string = pdb_get_munged_dial(account);
-		newstr = (userParameters.length == 0) ? NULL :
-			base64_encode_data_blob(talloc_tos(), userParameters);
+
+		if (userParameters.length != 0) {
+			newstr = base64_encode_data_blob(talloc_tos(),
+							 userParameters);
+			SMB_ASSERT(newstr != NULL);
+		}
 
 		if (STRING_CHANGED_NC(old_string, newstr))
 			pdb_set_munged_dial(account, newstr, PDB_CHANGED);
diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c
index cf5bef1..5185722 100644
--- a/source3/libnet/libnet_samsync_passdb.c
+++ b/source3/libnet/libnet_samsync_passdb.c
@@ -126,12 +126,15 @@ static NTSTATUS sam_account_from_delta(struct samu *account,
 
 	if (r->parameters.array) {
 		DATA_BLOB mung;
-		char *newstr;
+		char *newstr = NULL;
 		old_string = pdb_get_munged_dial(account);
 		mung.length = r->parameters.length * 2;
 		mung.data = (uint8_t *) r->parameters.array;
-		newstr = (mung.length == 0) ? NULL :
-			base64_encode_data_blob(talloc_tos(), mung);
+
+		if (mung.length != 0) {
+			newstr = base64_encode_data_blob(talloc_tos(), mung);
+			SMB_ASSERT(newstr != NULL);
+		}
 
 		if (STRING_CHANGED_NC(old_string, newstr))
 			pdb_set_munged_dial(account, newstr, PDB_CHANGED);
diff --git a/source3/rpc_server/samr/srv_samr_util.c b/source3/rpc_server/samr/srv_samr_util.c
index d052846..4c2307d 100644
--- a/source3/rpc_server/samr/srv_samr_util.c
+++ b/source3/rpc_server/samr/srv_samr_util.c
@@ -305,8 +305,6 @@ void copy_id18_to_sam_passwd(struct samu *to,
 void copy_id20_to_sam_passwd(struct samu *to,
 			     struct samr_UserInfo20 *from)
 {
-	const char *old_string;
-	char *new_string;
 	DATA_BLOB mung;
 
 	if (from == NULL || to == NULL) {
@@ -314,11 +312,18 @@ void copy_id20_to_sam_passwd(struct samu *to,
 	}
 
 	if (from->parameters.array) {
+		const char *old_string;
+		char *new_string = NULL;
 		old_string = pdb_get_munged_dial(to);
 		mung = data_blob_const(from->parameters.array,
 				       from->parameters.length);
-		new_string = (mung.length == 0) ?
-			NULL : base64_encode_data_blob(talloc_tos(), mung);
+
+		if (mung.length != 0) {
+			new_string = base64_encode_data_blob(talloc_tos(),
+							     mung);
+			SMB_ASSERT(new_string != NULL);
+		}
+
 		DEBUG(10,("INFO_20 PARAMETERS: %s -> %s\n",
 			old_string, new_string));
 		if (STRING_CHANGED_NC(old_string,new_string)) {
@@ -496,14 +501,17 @@ void copy_id21_to_sam_passwd(const char *log_prefix,
 
 	if ((from->fields_present & SAMR_FIELD_PARAMETERS) &&
 	    (from->parameters.array)) {
-		char *newstr;
+		char *newstr = NULL;
 		DATA_BLOB mung;
 		old_string = pdb_get_munged_dial(to);
 
 		mung = data_blob_const(from->parameters.array,
 				       from->parameters.length);
-		newstr = (mung.length == 0) ?
-			NULL : base64_encode_data_blob(talloc_tos(), mung);
+
+		if (mung.length != 0) {
+			newstr = base64_encode_data_blob(talloc_tos(), mung);
+			SMB_ASSERT(newstr != NULL);
+		}
 		DEBUG(10,("%s SAMR_FIELD_PARAMETERS: %s -> %s\n", l,
 			old_string, newstr));
 		if (STRING_CHANGED_NC(old_string,newstr)) {
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index 1b27a88..7bce5ca 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -1452,6 +1452,7 @@ static void manage_gensec_request(enum stdio_helper_mode stdio_helper_mode,
 			return;
 		} else {
 			base64_key = base64_encode_data_blob(state, session_key);
+			SMB_ASSERT(base64_key != NULL);
 			x_fprintf(x_stdout, "GK %s\n", base64_key);
 			talloc_free(base64_key);
 		}
@@ -1481,6 +1482,7 @@ static void manage_gensec_request(enum stdio_helper_mode stdio_helper_mode,
 
 	if (out.length) {
 		out_base64 = base64_encode_data_blob(mem_ctx, out);
+		SMB_ASSERT(out_base64 != NULL);
 	} else {
 		out_base64 = NULL;
 	}
diff --git a/source4/utils/ntlm_auth.c b/source4/utils/ntlm_auth.c
index 0816024..6d0e259 100644
--- a/source4/utils/ntlm_auth.c
+++ b/source4/utils/ntlm_auth.c
@@ -621,6 +621,7 @@ static void manage_gensec_request(enum stdio_helper_mode stdio_helper_mode,
 			return;
 		} else {
 			base64_key = base64_encode_data_blob(state, session_key);
+			SMB_ASSERT(base64_key != NULL);
 			mux_printf(mux_id, "GK %s\n", base64_key);
 			talloc_free(base64_key);
 		}
@@ -648,6 +649,7 @@ static void manage_gensec_request(enum stdio_helper_mode stdio_helper_mode,
 
 	if (out.length) {
 		out_base64 = base64_encode_data_blob(mem_ctx, out);
+		SMB_ASSERT(out_base64 != NULL);
 	} else {
 		out_base64 = NULL;
 	}
-- 
1.9.1


From d5a182f97114e0fc0e3e2a24cc25b7741c83fba3 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 3 May 2016 15:56:37 +0200
Subject: [PATCH 4/6] lib: Remove SMB_ASSERT from base64_encode_data_blob

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 lib/util/base64.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/util/base64.c b/lib/util/base64.c
index a4ce6fa..e01fb6d 100644
--- a/lib/util/base64.c
+++ b/lib/util/base64.c
@@ -114,7 +114,9 @@ _PUBLIC_ char *base64_encode_data_blob(TALLOC_CTX *mem_ctx, DATA_BLOB data)
 					   * random but should be enough for
 					   * the = and \0 */
 	result = talloc_array(mem_ctx, char, output_len); /* get us plenty of space */
-	SMB_ASSERT(result != NULL);
+	if (result == NULL) {
+		return NULL;
+	}
 
 	while (len--) {
 		int c = (unsigned char) *(data.data++);
-- 
1.9.1


From f54f163af966e381f8b3785aae6ed9787a25b3f5 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 3 May 2016 16:12:10 +0200
Subject: [PATCH 5/6] lib: Give base64.c its own .h

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 auth/gensec/gensec_start.c                  |  1 +
 auth/gensec/spnego.c                        |  1 +
 lib/util/base64.c                           |  1 +
 lib/util/base64.h                           | 52 +++++++++++++++++++++++++++++
 lib/util/charset/tests/convert_string.c     |  1 +
 lib/util/samba_util.h                       | 21 ------------
 source3/lib/tldap_util.c                    |  1 +
 source3/libnet/libnet_dssync_passdb.c       |  1 +
 source3/libnet/libnet_samsync_ldif.c        |  1 +
 source3/libnet/libnet_samsync_passdb.c      |  1 +
 source3/passdb/pdb_ipa.c                    |  1 +
 source3/passdb/pdb_samba_dsdb.c             |  1 +
 source3/rpc_server/samr/srv_samr_nt.c       |  1 +
 source3/rpc_server/samr/srv_samr_util.c     |  1 +
 source3/torture/torture.c                   |  1 +
 source3/utils/ntlm_auth.c                   |  1 +
 source4/lib/http/gensec/basic.c             |  1 +
 source4/lib/http/gensec/ntlm.c              |  1 +
 source4/ntvfs/posix/python/pyxattr_native.c |  1 +
 source4/torture/ndr/drsblobs.c              |  1 +
 source4/utils/ntlm_auth.c                   |  1 +
 21 files changed, 71 insertions(+), 21 deletions(-)
 create mode 100644 lib/util/base64.h

diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c
index 4c43519..1e61627 100644
--- a/auth/gensec/gensec_start.c
+++ b/auth/gensec/gensec_start.c
@@ -31,6 +31,7 @@
 #include "lib/param/param.h"
 #include "lib/util/tsort.h"
 #include "lib/util/samba_modules.h"
+#include "lib/util/base64.h"
 
 /* the list of currently registered GENSEC backends */
 static const struct gensec_security_ops **generic_security_ops;
diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c
index 3962d72..ef30ab7 100644
--- a/auth/gensec/spnego.c
+++ b/auth/gensec/spnego.c
@@ -30,6 +30,7 @@
 #include "auth/gensec/gensec_internal.h"
 #include "param/param.h"
 #include "lib/util/asn1.h"
+#include "lib/util/base64.h"
 
 #undef strcasecmp
 
diff --git a/lib/util/base64.c b/lib/util/base64.c
index e01fb6d..157cb34 100644
--- a/lib/util/base64.c
+++ b/lib/util/base64.c
@@ -23,6 +23,7 @@
 */
 
 #include "includes.h"
+#include "lib/util/base64.h"
 
 static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
diff --git a/lib/util/base64.h b/lib/util/base64.h
new file mode 100644
index 0000000..4763804
--- /dev/null
+++ b/lib/util/base64.h
@@ -0,0 +1,52 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * Samba utility functions
+ *
+ * Copyright (C) Andrew Tridgell 1992-2001
+ * Copyright (C) Simo Sorce      2001-2002
+ * Copyright (C) Martin Pool     2003
+ * Copyright (C) James Peach	 2006
+ * Copyright (C) Jeremy Allison  1992-2007
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __LIB_UTIL_BASE64_H__
+#define __LIB_UTIL_BASE64_H__
+
+#include "replace.h"
+#include "lib/util/data_blob.h"
+
+/**
+ Base64 decode a string, place into a data blob.  Caller to
+ data_blob_free() the result.
+**/
+DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const char *s);
+
+/**
+ Base64 decode a string, place into a data blob on NULL context.
+ Caller to data_blob_free() the result.
+**/
+DATA_BLOB base64_decode_data_blob(const char *s);
+
+/**
+ Base64 decode a string, inplace
+**/
+void base64_decode_inplace(char *s);
+/**
+ Base64 encode a binary data blob into a string
+**/
+char *base64_encode_data_blob(TALLOC_CTX *mem_ctx, DATA_BLOB data);
+
+#endif
diff --git a/lib/util/charset/tests/convert_string.c b/lib/util/charset/tests/convert_string.c
index 92de702..e63fca6 100644
--- a/lib/util/charset/tests/convert_string.c
+++ b/lib/util/charset/tests/convert_string.c
@@ -22,6 +22,7 @@
 #include "torture/torture.h"
 #include "lib/util/charset/charset.h"
 #include "param/param.h"
+#include "lib/util/base64.h"
 
 struct torture_suite *torture_local_convert_string_handle(TALLOC_CTX *mem_ctx);
 struct torture_suite *torture_local_string_case_handle(TALLOC_CTX *mem_ctx);
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 387e957..c339161 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -303,27 +303,6 @@ _PUBLIC_ int strwicmp(const char *psz1, const char *psz2);
 _PUBLIC_ void string_replace(char *s, char oldc, char newc);
 
 /**
- Base64 decode a string, place into a data blob.  Caller to data_blob_free() the result.
-**/
-_PUBLIC_ DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const char *s);
-
-/**
- Base64 decode a string, place into a data blob on NULL context.
- Caller to data_blob_free() the result.
-**/
-_PUBLIC_ DATA_BLOB base64_decode_data_blob(const char *s);
-
-
-/**
- Base64 decode a string, inplace
-**/
-_PUBLIC_ void base64_decode_inplace(char *s);
-/**
- Base64 encode a binary data blob into a string
-**/
-_PUBLIC_ char *base64_encode_data_blob(TALLOC_CTX *mem_ctx, DATA_BLOB data);
-
-/**
  * Compare 2 strings.
  *
  * @note The comparison is case-insensitive.
diff --git a/source3/lib/tldap_util.c b/source3/lib/tldap_util.c
index b7233f6..89f812b 100644
--- a/source3/lib/tldap_util.c
+++ b/source3/lib/tldap_util.c
@@ -23,6 +23,7 @@
 #include "../libcli/security/security.h"
 #include "../lib/util/asn1.h"
 #include "../librpc/ndr/libndr.h"
+#include "lib/util/base64.h"
 
 bool tldap_entry_values(struct tldap_message *msg, const char *attribute,
 			DATA_BLOB **values, int *num_values)
diff --git a/source3/libnet/libnet_dssync_passdb.c b/source3/libnet/libnet_dssync_passdb.c
index 62ce074..b80bece 100644
--- a/source3/libnet/libnet_dssync_passdb.c
+++ b/source3/libnet/libnet_dssync_passdb.c
@@ -28,6 +28,7 @@
 #include "dbwrap/dbwrap_rbt.h"
 #include "../libds/common/flag_mapping.h"
 #include "passdb.h"
+#include "lib/util/base64.h"
 
 /****************************************************************
 ****************************************************************/
diff --git a/source3/libnet/libnet_samsync_ldif.c b/source3/libnet/libnet_samsync_ldif.c
index d9ae414..198373e 100644
--- a/source3/libnet/libnet_samsync_ldif.c
+++ b/source3/libnet/libnet_samsync_ldif.c
@@ -29,6 +29,7 @@
 #include "transfer_file.h"
 #include "passdb.h"
 #include "passdb/pdb_ldap_schema.h"
+#include "lib/util/base64.h"
 
 #ifdef HAVE_LDAP
 
diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c
index 5185722..91482e6 100644
--- a/source3/libnet/libnet_samsync_passdb.c
+++ b/source3/libnet/libnet_samsync_passdb.c
@@ -28,6 +28,7 @@
 #include "libnet/libnet_samsync.h"
 #include "../libcli/security/security.h"
 #include "passdb.h"
+#include "lib/util/base64.h"
 
 /* Convert a struct samu_DELTA to a struct samu. */
 #define STRING_CHANGED (old_string && !new_string) ||\
diff --git a/source3/passdb/pdb_ipa.c b/source3/passdb/pdb_ipa.c
index 4d9d09c..ca305aa 100644
--- a/source3/passdb/pdb_ipa.c
+++ b/source3/passdb/pdb_ipa.c
@@ -29,6 +29,7 @@
 #include "passdb/pdb_ldap.h"
 #include "passdb/pdb_ipa.h"
 #include "passdb/pdb_ldap_schema.h"
+#include "lib/util/base64.h"
 
 #define IPA_KEYTAB_SET_OID "2.16.840.1.113730.3.8.3.1"
 #define IPA_MAGIC_ID_STR "999"
diff --git a/source3/passdb/pdb_samba_dsdb.c b/source3/passdb/pdb_samba_dsdb.c
index 54b9ef9..56f3f10 100644
--- a/source3/passdb/pdb_samba_dsdb.c
+++ b/source3/passdb/pdb_samba_dsdb.c
@@ -39,6 +39,7 @@
 #include "source3/include/secrets.h"
 #include "source4/auth/auth_sam.h"
 #include "auth/credentials/credentials.h"
+#include "lib/util/base64.h"
 
 struct pdb_samba_dsdb_state {
 	struct tevent_context *ev;
diff --git a/source3/rpc_server/samr/srv_samr_nt.c b/source3/rpc_server/samr/srv_samr_nt.c
index 2f6f020..6354556 100644
--- a/source3/rpc_server/samr/srv_samr_nt.c
+++ b/source3/rpc_server/samr/srv_samr_nt.c
@@ -45,6 +45,7 @@
 #include "auth.h"
 #include "rpc_server/srv_access_check.h"
 #include "../lib/tsocket/tsocket.h"
+#include "lib/util/base64.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
diff --git a/source3/rpc_server/samr/srv_samr_util.c b/source3/rpc_server/samr/srv_samr_util.c
index 4c2307d..e48c020 100644
--- a/source3/rpc_server/samr/srv_samr_util.c
+++ b/source3/rpc_server/samr/srv_samr_util.c
@@ -26,6 +26,7 @@
 #include "../librpc/gen_ndr/samr.h"
 #include "rpc_server/samr/srv_samr_util.h"
 #include "passdb.h"
+#include "lib/util/base64.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 8b8dbe9..d6489c8 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -42,6 +42,7 @@
 #include "../libcli/smb/read_smb.h"
 #include "../libcli/smb/smbXcli_base.h"
 #include "lib/util/sys_rw_data.h"
+#include "lib/util/base64.h"
 
 extern char *optarg;
 extern int optind;
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index 7bce5ca..e19bc7e 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -45,6 +45,7 @@
 #include "source3/auth/proto.h"
 #include "nsswitch/libwbclient/wbclient.h"
 #include "lib/param/loadparm.h"
+#include "lib/util/base64.h"
 
 #if HAVE_KRB5
 #include "auth/kerberos/pac_utils.h"
diff --git a/source4/lib/http/gensec/basic.c b/source4/lib/http/gensec/basic.c
index 86a2d51..4a488a3 100644
--- a/source4/lib/http/gensec/basic.c
+++ b/source4/lib/http/gensec/basic.c
@@ -24,6 +24,7 @@
 #include "auth/gensec/gensec.h"
 #include "auth/gensec/gensec_internal.h"
 #include "auth/credentials/credentials.h"
+#include "lib/util/base64.h"
 
 _PUBLIC_ NTSTATUS gensec_http_basic_init(void);
 
diff --git a/source4/lib/http/gensec/ntlm.c b/source4/lib/http/gensec/ntlm.c
index 07470fa..8afb275 100644
--- a/source4/lib/http/gensec/ntlm.c
+++ b/source4/lib/http/gensec/ntlm.c
@@ -23,6 +23,7 @@
 #include "auth/auth.h"
 #include "auth/gensec/gensec.h"
 #include "auth/gensec/gensec_internal.h"
+#include "lib/util/base64.h"
 
 _PUBLIC_ NTSTATUS gensec_http_ntlm_init(void);
 
diff --git a/source4/ntvfs/posix/python/pyxattr_native.c b/source4/ntvfs/posix/python/pyxattr_native.c
index 8dd98d2..6758996 100644
--- a/source4/ntvfs/posix/python/pyxattr_native.c
+++ b/source4/ntvfs/posix/python/pyxattr_native.c
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "librpc/ndr/libndr.h"
 #include "system/filesys.h"
+#include "lib/util/base64.h"
 
 void initxattr_native(void);
 
diff --git a/source4/torture/ndr/drsblobs.c b/source4/torture/ndr/drsblobs.c
index 938b6fe..ecdc014 100644
--- a/source4/torture/ndr/drsblobs.c
+++ b/source4/torture/ndr/drsblobs.c
@@ -22,6 +22,7 @@
 #include "torture/ndr/ndr.h"
 #include "librpc/gen_ndr/ndr_drsblobs.h"
 #include "torture/ndr/proto.h"
+#include "lib/util/base64.h"
 
 static const uint8_t forest_trust_info_data_out[] = {
 	0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
diff --git a/source4/utils/ntlm_auth.c b/source4/utils/ntlm_auth.c
index 6d0e259..75dcebf 100644
--- a/source4/utils/ntlm_auth.c
+++ b/source4/utils/ntlm_auth.c
@@ -38,6 +38,7 @@
 #include "lib/messaging/irpc.h"
 #include "auth/ntlmssp/ntlmssp.h"
 #include "param/param.h"
+#include "lib/util/base64.h"
 
 #define INITIAL_BUFFER_SIZE 300
 #define MAX_BUFFER_SIZE 63000
-- 
1.9.1


From d19855a7090443839fd4f624a8a4d22cae9de586 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 3 May 2016 16:12:23 +0200
Subject: [PATCH 6/6] lib: Avoid includes.h in base64.c

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 lib/util/base64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/util/base64.c b/lib/util/base64.c
index 157cb34..e9906f1 100644
--- a/lib/util/base64.c
+++ b/lib/util/base64.c
@@ -22,7 +22,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "includes.h"
+#include "replace.h"
 #include "lib/util/base64.h"
 
 static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-- 
1.9.1



More information about the samba-technical mailing list