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 <[email protected]>
Date:   Wed May 18 17:04:38 2016 +0200

    s3-net: Cleanup the code of printing migration
    
    Pair-Programmed-With: Guenther Deschner <[email protected]>
    Signed-off-by: Andreas Schneider <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Andreas Schneider <[email protected]>
    Autobuild-Date(master): Wed May 18 23:00:35 CEST 2016 on sn-devel-144

commit 858e1eaa64858790888b42d97ae4d6962a09756b
Author: Andreas Schneider <[email protected]>
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 <[email protected]>
    Signed-off-by: Andreas Schneider <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>

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

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

Reply via email to