[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Wed May 18 21:01:03 UTC 2016


The branch, master has been updated
       via  1171fe6 s3-net: Cleanup the code of printing migration
       via  858e1ea s3-net: Convert the key_name to UTF8 during migration
      from  f15b23f packaging: Set default limit for core file size in service files

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 1171fe6c7e6a43865ca9ec97e0c14d577d599a41
Author: Andreas Schneider <asn at samba.org>
Date:   Wed May 18 17:04:38 2016 +0200

    s3-net: Cleanup the code of printing migration
    
    Pair-Programmed-With: Guenther Deschner <gd at samba.org>
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Signed-off-by: Guenther Deschner <gd at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Wed May 18 23:00:35 CEST 2016 on sn-devel-144

commit 858e1eaa64858790888b42d97ae4d6962a09756b
Author: Andreas Schneider <asn at samba.org>
Date:   Wed May 18 16:51:45 2016 +0200

    s3-net: Convert the key_name to UTF8 during migration
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11922
    
    Pair-Programmed-With: Guenther Deschner <gd at samba.org>
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Signed-off-by: Guenther Deschner <gd at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/utils/net_printing.c | 133 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 120 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/utils/net_printing.c b/source3/utils/net_printing.c
index 6f805eb..8287e0e 100644
--- a/source3/utils/net_printing.c
+++ b/source3/utils/net_printing.c
@@ -33,9 +33,13 @@
 #include "printing/nt_printing_migrate.h"
 
 #define FORMS_PREFIX "FORMS/"
+#define FORMS_PREFIX_LEN 6
 #define DRIVERS_PREFIX "DRIVERS/"
+#define DRIVERS_PREFIX_LEN 8
 #define PRINTERS_PREFIX "PRINTERS/"
+#define PRINTERS_PREFIX_LEN 9
 #define SECDESC_PREFIX "SECDESC/"
+#define SECDESC_PREFIX_LEN 8
 
 #define ARG_ENCODING "encoding="
 
@@ -258,38 +262,91 @@ static int net_printing_dump(struct net_context *c, int argc,
 	     kbuf.dptr;
 	     newkey = tdb_nextkey(tdb, kbuf), free(kbuf.dptr), kbuf=newkey)
 	{
+		int cmp;
+
 		dbuf = tdb_fetch(tdb, kbuf);
 		if (!dbuf.dptr) {
 			continue;
 		}
 
-		if (strncmp((const char *)kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) == 0) {
-			dump_form(ctx, (const char *)kbuf.dptr+strlen(FORMS_PREFIX), dbuf.dptr, dbuf.dsize);
+		cmp = strncmp((const char *)kbuf.dptr,
+			      FORMS_PREFIX,
+			      FORMS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(FORMS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
+			dump_form(ctx, key_name, dbuf.dptr, dbuf.dsize);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}
 
-		if (strncmp((const char *)kbuf.dptr, DRIVERS_PREFIX, strlen(DRIVERS_PREFIX)) == 0) {
+		cmp = strncmp((const char *)kbuf.dptr,
+			      DRIVERS_PREFIX,
+			      DRIVERS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(DRIVERS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
 			dump_driver(ctx,
-				    (const char *)kbuf.dptr+strlen(DRIVERS_PREFIX),
+				    key_name,
 				    dbuf.dptr,
 				    dbuf.dsize,
 				    do_string_conversion);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}
 
-		if (strncmp((const char *)kbuf.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX)) == 0) {
+		cmp = strncmp((const char *)kbuf.dptr,
+			      PRINTERS_PREFIX,
+			      PRINTERS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(PRINTERS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
 			dump_printer(ctx,
-				     (const char *)kbuf.dptr+strlen(PRINTERS_PREFIX),
+				     key_name,
 				     dbuf.dptr,
 				     dbuf.dsize,
 				     do_string_conversion);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}
 
-		if (strncmp((const char *)kbuf.dptr, SECDESC_PREFIX, strlen(SECDESC_PREFIX)) == 0) {
+		cmp = strncmp((const char *)kbuf.dptr,
+			      SECDESC_PREFIX,
+			      SECDESC_PREFIX_LEN);
+		if (cmp == 0) {
 			dump_sd(ctx, (const char *)kbuf.dptr+strlen(SECDESC_PREFIX), dbuf.dptr, dbuf.dsize);
 			SAFE_FREE(dbuf.dptr);
 			continue;
@@ -351,39 +408,89 @@ static NTSTATUS printing_migrate_internal(struct net_context *c,
 	     kbuf.dptr;
 	     newkey = tdb_nextkey(tdb, kbuf), free(kbuf.dptr), kbuf = newkey)
 	{
+		int cmp;
+
 		dbuf = tdb_fetch(tdb, kbuf);
 		if (!dbuf.dptr) {
 			continue;
 		}
 
-		if (strncmp((const char *) kbuf.dptr, FORMS_PREFIX, strlen(FORMS_PREFIX)) == 0) {
+		cmp = strncmp((const char *) kbuf.dptr,
+			      FORMS_PREFIX,
+			      FORMS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(tmp_ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(FORMS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
 			printing_tdb_migrate_form(tmp_ctx,
 				     winreg_pipe,
-				     (const char *) kbuf.dptr + strlen(FORMS_PREFIX),
+				     key_name,
 				     dbuf.dptr,
 				     dbuf.dsize);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}
 
-		if (strncmp((const char *) kbuf.dptr, DRIVERS_PREFIX, strlen(DRIVERS_PREFIX)) == 0) {
+		cmp = strncmp((const char *) kbuf.dptr,
+			      DRIVERS_PREFIX,
+			      DRIVERS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(tmp_ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(DRIVERS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
 			printing_tdb_migrate_driver(tmp_ctx,
 				       winreg_pipe,
-				       (const char *) kbuf.dptr + strlen(DRIVERS_PREFIX),
+				       key_name,
 				       dbuf.dptr,
 				       dbuf.dsize,
 				       do_string_conversion);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}
 
-		if (strncmp((const char *) kbuf.dptr, PRINTERS_PREFIX, strlen(PRINTERS_PREFIX)) == 0) {
+		cmp = strncmp((const char *) kbuf.dptr,
+			      PRINTERS_PREFIX,
+			      PRINTERS_PREFIX_LEN);
+		if (cmp == 0) {
+			char *key_name = NULL;
+			size_t converted_size = 0;
+			bool ok;
+
+			ok = pull_ascii_talloc(tmp_ctx,
+					       &key_name,
+					       (const char *) kbuf.dptr + strlen(PRINTERS_PREFIX),
+					       &converted_size);
+			if (!ok) {
+				continue;
+			}
+
 			printing_tdb_migrate_printer(tmp_ctx,
 					winreg_pipe,
-					(const char *) kbuf.dptr + strlen(PRINTERS_PREFIX),
+					key_name,
 					dbuf.dptr,
 					dbuf.dsize,
 					do_string_conversion);
+			TALLOC_FREE(key_name);
 			SAFE_FREE(dbuf.dptr);
 			continue;
 		}


-- 
Samba Shared Repository



More information about the samba-cvs mailing list