[SCM] Samba Shared Repository - branch v4-0-stable updated

Andrew Bartlett abartlet at samba.org
Tue Dec 8 17:51:49 MST 2009


The branch, v4-0-stable has been updated
       via  100e249... This is alpha10
       via  193e40c... A WHATSNEW for alpha10
       via  dd650ed... s4:selftest: skip SMB2-ACLS for now
       via  33ecfb0... s4:selftest: run RAW-STREAMS again
       via  d3d2e39... RAW-STREAMS: convert failing tests to torture api
       via  1b6c444... spoolss: fix spoolss_DriverInfo8 IDL.
       via  5e8e5df... s4-smbtorture: make level 8 the reference for PrinterDriverEnum test.
       via  7770d14... s3-spoolss: cleanup _spoolss_EnumPrinterDrivers().
       via  0efbd93... s3-spoolss: remove unused architecture from fill_printer_driver_info1().
       via  af08962... s3-spoolss: remove ridiculous amount of duplicate driver code.
       via  1c9eba4... s3-spoolss: fully support level 8 drivers.
       via  35c50dc... s3-spoolss: use driver level info8 everywhere in spoolss server internally.
       via  35c0677... s4-smbtorture: fill in COMPARE_STRING_ARRAY macro in spoolss driver test.
       via  c8615b6... s3: allocate only "new" space, not "old" sparse space in the posix_fallocate path
       via  ed5c337... s4:selftest: use ${selftest_prefix} instead of hardcoded st/
       via  4608e3f... packaging(RHEL-CTDB): clean some commented out lines from the files sections
       via  ac702b8... packaging(RHEL-CTDB): explicitly list library versions in samba-winbind-32bit
       via  551758a... packaging(RHEL-CTDB): explicitly list library versions in samba-common
       via  b921de7... packaging(RHEL-CTDB): explicitly list all packaged idmap/nss-info/charset modules
       via  cb831f36.. packaging(RHEL-CTDB): explicitly list all the vfs modules in the main package
       via  8c37e70... packaging(RHEL-CTDB): add some checks to test the built smbd
       via  87de8ae... packaging(RHEL-CTDB): make everything instead of all in the build stage
       via  52083a8... s4-selftest: show the test summary at the end of 'make test' in the build farm
       via  29c87ef... s4-heimdal: fixed a use-after-free heimdal bug
       via  cc9d4d5... s4-drs: use -r to ldbdel in unvampire devel script
       via  ff984cd... s4-ldb: fixed ldbdel with -r (recursive deletion)
       via  b2d8e11... s4:build Bump ldb and tdb required versions.
       via  1bf825b... s4 torture: Cleanup RAW-ACLS a bit
       via  978dc61... s4-selftest: don't consider spoolss failures to be an error in s4
       via  f1d9382... s4/smbstreams: Fix memory use after free.
       via  bf7cc32... krb5: Fix leaked hx509_context pointer
       via  4653d05... tdr-test: Fix 'push_charset' test
       via  8efabcc... talloc: Fix write behind memory block
       via  105eb95... s4 quicktest: exclude raw-streams from quicktest until bug is fixed
       via  f717a79... s4 torture: Add a new torture:hide_on_access_denied parameter
       via  f4aa47b... s4 torture: win 7 doesn't like the sequential_only flag for directories
       via  d252d23... s4 torture: Port RAW-ACLS tests to SMB2
       via  8ceb428... s4 torure: Add SMB2 utility functions
       via  1724273... s4 torture: RAW-ACL Improvements
       via  919440a... s4 torture: Convert RAW-STREAMS to a set of test suites rather than a monolithic test
       via  6bc8a2b... s4 torture: Update RAW-RENAME to pass against win7
       via  cd72301... s4 torture: Add a new RAW-STREAMS test to simulate the summary tab
       via  5d66d43... s4 torture: Fix the streams create disposition tests to actually return an error on failure
       via  47f5aac... s4/torture: add test for zero byte read contention with byte range locks
       via  995b480... s4/libcli: add define for exclusive lock mode
       via  b4c72e4... s4/torture: fix >80 column spacing issues
       via  0c42d65... s4/torture: add delete-on-close test for directories
       via  a246310... parent_sd can never be null in this function, so don't check for it.
       via  12bac42... Hopefullt final fix for 6802 - acl_xattr.c module: A created folder does not properly inherit permissions from parent and 6938 - No hook exists to check creation rights when using acl_xattr module
       via  909cd26... s3: let gencache_init() use tdb_check()
       via  8f19c08... s3: let netsamlogon_cache_init() use tdb_check()
       via  6f6608c... s3: let tdb_validate_child() use tdb_check()
       via  886fe5b... s3: require tdb 1.1.7 with tdb_check()
       via  5055ba1... s3:docs: Document "directory name cache size".
       via  9550ade... s3: de-deprecate "write cache size" to prevent its removal without a proper alternative
       via  4334092... Fix release script with newer versins of git
       via  8de6f71... s4-smbtorture: disable some spoolss printerdata tests which s3 does not pass at the moment.
       via  c85ed00... s3: fix net and rpcclient after setprinterdataex changes.
       via  123d8d1... s4-smbtorture: fix RPC-SPOOLSS after _spoolss_SetPrinterDataEx IDL change.
       via  ef9d658... s3-spoolss: let _spoolss_DeletePrinterData call into _spoolss_DeletePrinterDataEx.
       via  167dca0... s3-spoolss: let _spoolss_SetPrinterData call into _spoolss_SetPrinterDataEx.
       via  778124e... s3-spoolss: let _spoolss_GetPrinterData call into _spoolss_GetPrinterDataEx.
       via  0882316... spoolss: rework spoolss_GetPrinterDataEx and spoolss_SetPrinterDataEx.
       via  a367b2b... s3-spoolss: a default printer should have at least a "PrintDriverData" key.
       via  1bc83b9... s3-winreg: fill in some inline comments.
       via  5d46530... s3-winreg: remove trailing whitespace.
       via  71018eb... s3:auth: Fix typo in debug message.
       via  fe01e0e... examples: Fix the build of the example VFS modules.
       via  9b0780c... s4:dsdb Use ldb_match_msg_objectclass in operational.c
       via  54ea4b1... s4:ldb Add a function to match a message against an objectClass
       via  b2db28b... s4:ldap.py Improve testsuite for primaryGroupToken behaviour
       via  354b80b3.. s4:dsdb Make primaryGroupToken calculation more efficient and correct
       via  45cd4c9... s4:dsdb Make parentGUID handler use dsdb_module_search_dn()
       via  a4725f5... s4:build torturedir and -DTORTUREDIR is unused
       via  972ee4b... s4:dsdb Hide the LM password by default too
       via  7050764... streamline some log levels for invalid servicenames
       via  da8b405... s3: Fix a const discard warning
       via  3b8e85d... s3: talloc_array_length deals file with a NULL argument
       via  1ba91c0... s3: Small simplification: qsort deals fine with just one entry
       via  449045e... s3: Simplify usr_info_cmp by calling timeval_compare()
       via  aef303f... s3: Add rpcclient wkssvc_enumerateusers
       via  bbffd79... s3: Complete support for NetWkstaGetInfo/NetWkstaEnumUsers
       via  7eaff9b... s3: First cut at _wkssvc_NetWkstaEnumUsers
       via  a902c4c... s3: Support NetWkstaGetInfo 101 and 102
       via  9b265a6... s4-ldif: Fix memory leek in ldb_ldif_write()
       via  21d3aa8... packaging(RHEL-CTDB): package dbwrap_tool and dbwrap_torture in the common pkg
       via  04ba95c... s3:dbwrap_ctdb: increase the number of commit retries 5-->100
       via  d92d770... s3:dbwrap_ctdb: increase the rsn of the __transaction_lock__ when storing
       via  743155f... s3: Fix explicit stat64 support
       via  3264a98... s3: check if glibc has broken posix_fallocate
       via  32915ce... Make Samba3 pass the RAW-LOCK test as Windows.
       via  1d3942c... Make smbtorture4 match Windows behavior.
       via  265e4df... s3: bug #6967: Prevent glibc error on net ads join: talloc()ed memory should not be SAFE_FREE()ed.
       via  02fe863... s4-smbtorture: heavily expand printerdata tests in RPC-SPOOLSS.
       via  f5aff32... s3 aclocal.m4: Fix iconv checks, clean up m4 code
       via  be78d4a... s4-ldb: fixed show_deleted module not to corrupt parse trees
       via  ced3eef... s4-drsutil: fixed a memory leak in samdb_search_count
       via  4f6d5d0... s4 torture: Convert create_complex_file to use BASIC_INFO instead of deprecated command
       via  3507350... s4 torture: Fix call to smbcli_open
       via  a3df55b... s4 torture: Make RAW-SEARCH pass against win7
       via  2dc5bd1... s4 torture: Parameterize WRITE_AND_CLOSE support
       via  f26a500... s4 torture: Add lockread_supported based off of CAP_LOCK_AND_READ
       via  5882282... s4 torture: Allow READ to be parameterized, add more readx tests
       via  60d9828... s4-torture: Allow the legacy DENY_FCB/DENY_DOS share modes to be ignored
       via  5c85776... s4 selftest/quicktest: Update known failures for the sfileinfo and oplock changes
       via  15e1c61... s4 torture: Add a new RAW-OPLOCK test: BATCH26
       via  8f7e573... s4 torture: Close the third handle in RAW-OPLOCK-BATCH22
       via  522d6bc... s4 torture: Convert an error to a warning in RAW-OPLOCK-BATCH22
       via  b14da4f... s4 torture: Add a few more windows target types
       via  fc78326... s4 torture: Convert to a more modern version of read in RAW-OPLOCK-BATCH4
       via  af8b785... s4 torture: Allow some implementations to break from level1 to none with two breaks
       via  66c9687... Make sure we're not using the old smb_fname data.
       via  3fe7dfd... Remove smb_fname duplicates that just keep the same information as in fsp->fsp_name.
       via  459a968... s3-spoolss: handle SEC_FLAG_MAXIMUM_ALLOWED in spoolss_OpenPrinterEx.
       via  2f0548f... s4-smbtorture: check more WERRORs in RPC-SPOOLSS.
       via  4e20a6f... s4-smbtorture: call test_EnumPrinterDrivers with architecture in RPC-SPOOLSS.
       via  91e0bdd... Refactor reply_rmdir to use handle based code. All calls are now handle based. Put rmdir into close.c and make it private. Jeremy.
       via  80e0661... s4:operational LDB module - Fix usage of LDB constants
       via  fed6ac0... s4:ntvfs/posix/pvfs_streams - Fix "discard const" warning
       via  1a855eb... s4:ntvfs/posix/pvfs_resolve - Fix "discard const" warning
       via  cdb68bd... s3: Fix crash in winbindd;(bug#6879).
       via  dfcc411... Remove unneeded argument from can_set_delete_on_close(). Ensure can_set_delete_on_close() is correctly called before any setting of the disposition bit (clean up the do_unlink() call). Jeremy.
       via  76be0f6... s4/selftest: knownfail some locking tests until bugs are fixed
       via  7c938d1... Ñ•3: remove superfluous option check
       via  48358b3... s4/torture: add multiple lock cancel test
       via  ad9c5a7... s4/torture: add addition multiple lock tests
       via  dfbb92e... s4/torture: fix build warnings by removing unecessary const
       via  438b7c4... s4/torture: Add target functionality parameters to SMBv1 BRL tests
       via  9a3d9ab... s3-selftest: run LOCAL-NDR when running make selftest.
       via  450211b... s4-smbtorture: be very strict in checking spools_EnumPrinterKey results.
       via  f32ccc3... spoolss: hand-marshall the spoolss_StringArray2 struct for spoolss_EnumPrinterKey.
       via  8d7a43f... s4-drs: fixed UDV and overlapping sync calls in DRS
       via  b65b887... s4-drs: fixed updating of uSNChanged in replmd_modify
       via  a2929a6... s3:build: remove redundant qnx block size definition
       via  365c6b4... Restructure the ACL code some more, get the internal semantics right. The previous bugs were due to the fact that get_nt_acl_internal() could return an NTSTATUS error if there was no stored ACL blob, but otherwise would return the underlying ACL from the filysystem. Fix this so it always returns a valid acl if it can, and if it does not its an error to be reported back to the client. This then changes the inherit acl code. Previously we were trying to match Windows by setting a minimal ACL on a new file that didn't inherit anything from a parent directory. This is silly - the returned ACL wouldn't match the underlying UNIX permissions. The current code will correctly inherit from a parent if a parent has any inheritable ACE entries that apply to the new object, but will return a mapping from the underlying UNIX permissions if the parent has no inheritable entries. This makes much more sense for new files/directories. Jeremy.
       via  1d013fd... s3:build: fix shared library build on QNX
       via  148e79d... Ensure check_parent_acl_common() only looks at stored blobs - returns NT_STATUS_OK if there aren't any. Jeremy.
       via  95c1862... s3: prefer posix_fallocate for doing "strict allocate"
       via  486c8d5... Ensure get_nt_acl_internal() only looks at the ACL blobs, not reads off the underlying filesystem. Ensure that vfs_acl_tdb.c returns NT_STATUS_NOT_FOUND, not NT_STATUS_OBJECT_NAME_NOT_FOUND when it can't find a blob matching the file. Jeremy.
       via  b6fdecd... Fix bug #6837 - "Too many open files" when trying to access large number of files from Windows 7. Original patch by me fixed up with the correct open files number by jmaggard10 at hotmail.com. Jeremy.
       via  5f60855... samba-spoolss: use spoolss_StringArray2 in spoolss_EnumPrinterKey.
       via  292af4f... spoolss: add spoolss_StringArray2.
       via  91bb065... s3-spoolss: move MAXDEVICENAME to spoolss idl.
       via  53744f0... s3: Cope with older external libtdb
       via  ecb071c... Revert "s3-build: taise tdb version when building against system libtdb library."
       via  8dda4ce... Ensure we don't see the xattr used to store NT security (visible when xattr_tdb is used). Allows make test to pass with acl_xattr.so prepended to the vfs modules. Jeremy.
       via  ae64978... s3: Fix smbd to correctly return INVALID_LEVEL on set_file_end_of_file_info for paths
       via  4e8b6c5... s4 torture: Change oplock to use passthrough for exclusive3/batch11
       via  5035a90... s4 torture: Update RAW-SFILEINFO-END-OF-FILE to test some additional corner cases
       via  5a934fd... Revert "s4 torture: Allow onefs to be checked like samba3 and samba4"
       via  66bf780... s4 torture: Change RAW-SFILEINFO-END-OF-FILE to check for share modes by default
       via  2738e31... s4 torture: Move target macros to a common header instead of redefining them in multiple files
       via  9d8867f... s3:build: fix detection of CTDB headers on systems without system-libtalloc
       via  51b6e23... s3:build: fix the build when no external talloc and tdb are installed.
       via  2d1bd87... s4:torture/raw/lock - Fix "discard const" warnings by introducing "discard_const_p"s
       via  262d26d... s4:torture/nbt/wins - Add more casts
       via  58a5e76... s4:torture/nbench/nbench - Add a cast before "str_list_make_shell"
       via  8b44999... s4:torture/ldap/ldap_sort - Add some casts to suppress warnings
       via  7be99d3... s4:schema - Make some more (result) variables const and fix up warnings with "discard_const_p"
       via  012494b... util/util_strlist - add a call "const_str_list" for making "unconst" lists "const"
       via  9ce7e9a... s4:kdc - Merged kdc_tcp_accept() and kpasswdd_tcp_accept().
       via  0c89a6f... s4:kdc - Merged kdc_add_kdc_socket() and kdc_add_kpasswd_socket().
       via  bd17df7... s4 - Create default modules directory.
       via  c93fc3a... s4:kdc - Disable KDC port when it's set to 0.
       via  183ea82... Merge commit 'origin/master' into abartlet-devel
       via  d58413d... On our way to Samba4 alpha10!
       via  83c106e... s4-ldb: the '1' form of extended_dn search is easier to read
      from  ca2c645... Fix build of Samba4 from tarball generated by mkrelease.sh

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-stable


- Log -----------------------------------------------------------------
commit 100e249c79f945d7a27e473f2efe71331d0015ce
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Dec 8 14:12:19 2009 +1100

    This is alpha10

commit 193e40cd344b53aaaafb40556c20a3b45434bc0c
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Dec 8 14:11:45 2009 +1100

    A WHATSNEW for alpha10

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

Summary of changes:
 WHATSNEW4.txt                                      |   33 +-
 .../smbdotconf/misc/directorynamecachesize.xml     |   14 +
 examples/VFS/skel_opaque.c                         |    8 +-
 examples/VFS/skel_transparent.c                    |   15 +-
 lib/talloc/talloc.c                                |    2 +-
 lib/tdb/release-script.sh                          |    2 +-
 lib/tdr/testsuite.c                                |    2 +-
 lib/util/util.h                                    |    5 +
 lib/util/util_strlist.c                            |    9 +
 librpc/gen_ndr/cli_spoolss.c                       |   38 +-
 librpc/gen_ndr/cli_spoolss.h                       |   20 +-
 librpc/gen_ndr/ndr_spoolss.c                       |  278 ++--
 librpc/gen_ndr/ndr_spoolss.h                       |   18 +
 librpc/gen_ndr/spoolss.h                           |   73 +-
 librpc/gen_ndr/srv_spoolss.c                       |   12 +-
 librpc/idl/spoolss.idl                             |   56 +-
 librpc/ndr/ndr_spoolss_buf.c                       |  212 +++
 librpc/ndr/ndr_spoolss_buf.h                       |    6 +
 packaging/RHEL-CTDB/samba.spec.tmpl                |   97 +-
 source3/auth/auth_sam.c                            |    4 +-
 source3/configure.in                               |  387 +++--
 source3/include/local.h                            |   20 +-
 source3/include/nt_printing.h                      |    2 -
 source3/include/proto.h                            |   18 +-
 source3/include/smb.h                              |    2 -
 source3/lib/dbwrap_ctdb.c                          |    4 +-
 source3/lib/gencache.c                             |   25 +
 source3/lib/ldb/ldb_tdb/ldb_tdb.c                  |    2 +
 source3/lib/secdesc.c                              |   20 +
 source3/lib/system.c                               |   29 +-
 source3/lib/tdb_validate.c                         |   11 +
 source3/libads/ldap.c                              |    2 +-
 source3/libsmb/samlogon_cache.c                    |   46 +-
 source3/locking/brlock.c                           |    5 +
 source3/locking/locking.c                          |   11 +-
 source3/m4/aclocal.m4                              |   57 +-
 source3/modules/onefs_open.c                       |   11 +-
 source3/modules/vfs_acl_common.c                   |  531 +++---
 source3/modules/vfs_acl_tdb.c                      |   53 +-
 source3/modules/vfs_acl_xattr.c                    |   36 +-
 source3/modules/vfs_default.c                      |   45 +-
 source3/param/loadparm.c                           |   18 +-
 source3/printing/nt_printing.c                     |  302 +++-
 source3/registry/reg_backend_printing.c            |   28 +-
 source3/rpc_client/cli_spoolss.c                   |   24 +-
 source3/rpc_server/srv_spoolss_nt.c                |  930 +++-------
 source3/rpc_server/srv_winreg_nt.c                 |  128 +-
 source3/rpc_server/srv_wkssvc_nt.c                 |  536 ++++++-
 source3/rpcclient/cmd_spoolss.c                    |   23 +-
 source3/rpcclient/cmd_wkssvc.c                     |   51 +
 source3/script/tests/test_posix_s3.sh              |    2 +-
 source3/smbd/close.c                               |  260 +++-
 source3/smbd/files.c                               |    2 -
 source3/smbd/lanman.c                              |   50 +-
 source3/smbd/open.c                                |   30 +-
 source3/smbd/reply.c                               |  354 +---
 source3/smbd/service.c                             |    2 +-
 source3/smbd/smb2_tcon.c                           |    2 +-
 source3/smbd/trans2.c                              |   42 +-
 source3/utils/net_rpc_printer.c                    |   13 +-
 source3/winbindd/winbindd_rpc.c                    |   10 +-
 source4/Makefile                                   |    4 +-
 source4/VERSION                                    |    2 +-
 source4/dsdb/common/util.c                         |   67 +-
 source4/dsdb/samdb/ldb_modules/operational.c       |  116 +-
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c    |    5 +-
 source4/dsdb/samdb/ldb_modules/show_deleted.c      |   49 +-
 source4/dsdb/schema/schema.h                       |    8 +-
 source4/dsdb/schema/schema_inferiors.c             |  117 +-
 source4/dynconfig/config.mk                        |    1 -
 source4/heimdal/lib/krb5/context.c                 |    4 +
 source4/heimdal/lib/krb5/init_creds_pw.c           |    1 +
 source4/kdc/kdc.c                                  |  147 +-
 source4/lib/ldb/common/ldb_ldif.c                  |    2 +
 source4/lib/ldb/common/ldb_match.c                 |   19 +
 source4/lib/ldb/configure.ac                       |    2 +-
 source4/lib/ldb/external/libtdb.m4                 |    2 +-
 source4/lib/ldb/include/ldb_module.h               |    3 +
 source4/lib/ldb/tests/python/ldap.py               |   22 +
 source4/lib/ldb/tools/cmdline.c                    |    2 +-
 source4/lib/ldb/tools/ldbdel.c                     |   15 +
 source4/libcli/raw/libcliraw.h                     |    1 +
 source4/libcli/raw/rawnegotiate.c                  |    3 +
 source4/libcli/raw/smb.h                           |    1 +
 source4/libcli/smb2/util.c                         |    1 +
 source4/min_versions.m4                            |    4 +-
 source4/ntvfs/posix/pvfs_resolve.c                 |    6 +-
 source4/ntvfs/posix/pvfs_streams.c                 |   12 +-
 source4/ntvfs/posix/vfs_posix.h                    |    4 +-
 source4/rpc_server/drsuapi/getncchanges.c          |   82 +-
 source4/rpc_server/samr/dcesrv_samr.c              |    6 +-
 source4/scripting/devel/drs/unvampire_ad.sh        |    7 +-
 source4/selftest/config.mk                         |    1 +
 source4/selftest/knownfail                         |   17 +-
 source4/selftest/quick                             |    2 -
 source4/selftest/skip                              |    1 +
 source4/torture/basic/delete.c                     |   63 +
 source4/torture/basic/denytest.c                   |   20 +
 source4/torture/ldap/ldap_sort.c                   |   14 +-
 source4/torture/nbench/nbench.c                    |    5 +-
 source4/torture/nbt/wins.c                         |   18 +-
 source4/torture/raw/acls.c                         |  968 ++++++++---
 source4/torture/raw/lock.c                         |  347 ++++-
 source4/torture/raw/lookuprate.c                   |    2 +-
 source4/torture/raw/oplock.c                       |  190 ++-
 source4/torture/raw/raw.c                          |    4 +-
 source4/torture/raw/read.c                         |   36 +-
 source4/torture/raw/rename.c                       |   32 +-
 source4/torture/raw/search.c                       |   11 +-
 source4/torture/raw/setfileinfo.c                  |  129 ++-
 source4/torture/raw/streams.c                      |  572 ++++---
 source4/torture/raw/write.c                        |   10 +
 source4/torture/rpc/spoolss.c                      |  632 +++++--
 source4/torture/rpc/spoolss_win.c                  |   28 +-
 source4/torture/smb2/acls.c                        | 1875 ++++++++++++++++++++
 source4/torture/smb2/config.mk                     |    1 +
 source4/torture/smb2/create.c                      |  623 +++++--
 source4/torture/smb2/lock.c                        |  373 ++++-
 source4/torture/smb2/setinfo.c                     |   89 +-
 source4/torture/smb2/smb2.c                        |    1 +
 source4/torture/smb2/util.c                        |  104 ++-
 source4/torture/smbtorture.c                       |   30 +-
 source4/torture/smbtorture.h                       |   43 +
 source4/torture/util.h                             |   11 +
 source4/torture/util_smb.c                         |   46 +-
 125 files changed, 8593 insertions(+), 3448 deletions(-)
 create mode 100644 docs-xml/smbdotconf/misc/directorynamecachesize.xml
 create mode 100644 source4/torture/smb2/acls.c


Changeset truncated at 500 lines:

diff --git a/WHATSNEW4.txt b/WHATSNEW4.txt
index 4513f22..75e2482 100644
--- a/WHATSNEW4.txt
+++ b/WHATSNEW4.txt
@@ -1,4 +1,4 @@
-What's new in Samba 4 alpha9
+What's new in Samba 4 alpha10
 ============================
 
 Samba 4 is the ambitious next version of the Samba suite that is being
@@ -6,13 +6,13 @@ developed in parallel to the stable 3.0 series. The main emphasis in
 this branch is support for the Active Directory logon protocols used
 by Windows 2000 and above.
 
-Samba4 alpha9 follows on from the alpha release series we have been
+Samba4 alpha10 follows on from the alpha release series we have been
 publishing since September 2007
 
 WARNINGS
 ========
 
-Samba4 alpha9 is not a final Samba release.  That is more a reference
+Samba4 alpha10 is not a final Samba release.  That is more a reference
 to Samba4's lack of the features we expect you will need than a
 statement of code quality, but clearly it hasn't seen a broad
 deployment yet.  If you were to upgrade Samba3 (or indeed Windows) to
@@ -62,31 +62,12 @@ working on modules to map between AD-like behaviours and this backend.
 We are aiming for Samba 4 to be powerful frontend to large
 directories.
 
-CHANGES SINCE alpha8
+CHANGES SINCE alpha9
 =====================
 
-In the time since Samba4 alpha8 was released in June 2009, Samba has
-continued to evolve, but you may particularly notice these areas 
-(in no particular order):
-
- Samba4 now includes the full set of user interface strings (display Specifiers)
- required to have the Microsoft Management Console operate
-
- LDB (the core Samba4 database library) has again been reworked for
- better performance
-
- Replication between Samba4 and Active Directory domains using the
- native replication protocol (DRS) has been demonstrated.
-
- Access Control Lists (in nTSecurityDescriptor) are now set correctly
- on objects in the directory, based on the same rules as Windows 2008.
- (Searches and still use a simplistic administrator/not administrator
- criteria)
-
-These are just some of the user-visible highlights of the work done in
-the past few months.  More details of the work done 'under the hood'
-can be found in our GIT history.
-
+Alpha9 was released last week, but in the time since the release we
+have found and fixed an important segfault, and improved the
+experimental DRS replication. 
 
 CHANGES
 =======
diff --git a/docs-xml/smbdotconf/misc/directorynamecachesize.xml b/docs-xml/smbdotconf/misc/directorynamecachesize.xml
new file mode 100644
index 0000000..1064b7e
--- /dev/null
+++ b/docs-xml/smbdotconf/misc/directorynamecachesize.xml
@@ -0,0 +1,14 @@
+<samba:parameter name="directory name cache size"
+		 context="S"
+		 type="integer"
+		 advanced="1"
+		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>
+	This parameter specifies the the size of the directory name cache.
+	It will be needed to turn this off for *BSD systems.
+	</para>
+
+</description>
+<value type="default">100</value>
+</samba:parameter>
diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 243621e..380b3b6 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -313,7 +313,7 @@ static bool skel_lock(vfs_handle_struct *handle, files_struct *fsp, int op, SMB_
 	return false;
 }
 
-static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode)
+static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode, uint32 access_mask)
 {
 	errno = ENOSYS;
 	return -1;
@@ -454,8 +454,10 @@ static void skel_strict_unlock(struct vfs_handle_struct *handle,
 }
 
 static NTSTATUS skel_translate_name(struct vfs_handle_struct *handle,
-				char **mapped_name,
-				enum vfs_translate_direction direction)
+				const char *mapped_name,
+				enum vfs_translate_direction direction,
+				TALLOC_CTX *mem_ctx,
+				char **pmapped_name)
 {
 	return NT_STATUS_NOT_IMPLEMENTED;
 }
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index c52b057..27363ff 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -295,9 +295,9 @@ static bool skel_lock(vfs_handle_struct *handle, files_struct *fsp, int op, SMB_
 	return SMB_VFS_NEXT_LOCK(handle, fsp, op, offset, count, type);
 }
 
-static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode)
+static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode, uint32 access_mask)
 {
-	return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode);
+	return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode, access_mask);
 }
 
 static int skel_linux_setlease(struct vfs_handle_struct *handle, struct files_struct *fsp, int leasetype)
@@ -443,12 +443,13 @@ static void skel_strict_unlock(struct vfs_handle_struct *handle,
 }
 
 static NTSTATUS skel_translate_name(struct vfs_handle_struct *handle,
-				char **mapped_name,
-				enum vfs_translate_direction direction)
+				const char *mapped_name,
+				enum vfs_translate_direction direction,
+				TALLOC_CTX *mem_ctx,
+				char **pmapped_name)
 {
-	return SMB_VFS_NEXT_TRANSLATE_NAME(handle,
-					mapped_name,
-					direction);
+	return SMB_VFS_NEXT_TRANSLATE_NAME(handle, mapped_name, direction,
+					   mem_ctx, pmapped_name);
 }
 
 static NTSTATUS skel_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c
index 7beda4b..f7b1ac3 100644
--- a/lib/talloc/talloc.c
+++ b/lib/talloc/talloc.c
@@ -1184,7 +1184,7 @@ void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *n
 #if ALWAYS_REALLOC
 	new_ptr = malloc(size + TC_HDR_SIZE);
 	if (new_ptr) {
-		memcpy(new_ptr, tc, tc->size + TC_HDR_SIZE);
+		memcpy(new_ptr, tc, MIN(tc->size, size) + TC_HDR_SIZE);
 		free(tc);
 	}
 #else
diff --git a/lib/tdb/release-script.sh b/lib/tdb/release-script.sh
index ddeb753..273ca30 100755
--- a/lib/tdb/release-script.sh
+++ b/lib/tdb/release-script.sh
@@ -13,7 +13,7 @@ fi
 git clean -f -x -d lib/tdb
 git clean -f -x -d lib/replace
 
-curbranch=`git-branch |grep "^*" | tr -d "* "`
+curbranch=`git branch |grep "^*" | tr -d "* "`
 
 version=$1
 strver=`echo ${version} | tr "." "-"`
diff --git a/lib/tdr/testsuite.c b/lib/tdr/testsuite.c
index 36bb164..ca76b52 100644
--- a/lib/tdr/testsuite.c
+++ b/lib/tdr/testsuite.c
@@ -154,7 +154,7 @@ static bool test_push_charset(struct torture_context *tctx)
 	torture_assert_ntstatus_ok(tctx, tdr_push_charset(tdr, &l, 4, 1, CH_UTF8), 
 							   "push failed");
 	torture_assert_int_equal(tctx, 4, tdr->data.length, "offset invalid");
-	torture_assert(tctx, strcmp("bloe", (const char *)tdr->data.data) == 0, "right string push");
+	torture_assert(tctx, strncmp("bloe", (const char *)tdr->data.data, 4) == 0, "right string push");
 
 	torture_assert_ntstatus_ok(tctx, tdr_push_charset(tdr, &l, -1, 1, CH_UTF8), 
 							   "push failed");
diff --git a/lib/util/util.h b/lib/util/util.h
index e7ea0ba..729190a 100644
--- a/lib/util/util.h
+++ b/lib/util/util.h
@@ -535,6 +535,11 @@ _PUBLIC_ const char **str_list_add_const(const char **list, const char *s);
 _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx,
 					  const char **list);
 
+/**
+ * Needed for making an "unconst" list "const"
+ */
+_PUBLIC_ const char **const_str_list(char **list);
+
 
 /* The following definitions come from lib/util/util_file.c  */
 
diff --git a/lib/util/util_strlist.c b/lib/util/util_strlist.c
index 71998b9..6d1a695 100644
--- a/lib/util/util_strlist.c
+++ b/lib/util/util_strlist.c
@@ -486,3 +486,12 @@ _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx,
 	ret[i] = NULL;
 	return ret;
 }
+
+/**
+ * Needed for making an "unconst" list "const"
+ */
+_PUBLIC_ const char **const_str_list(char **list)
+{
+	return (const char **)list;
+}
+
diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c
index aba70f2..e63a781 100644
--- a/librpc/gen_ndr/cli_spoolss.c
+++ b/librpc/gen_ndr/cli_spoolss.c
@@ -11710,8 +11710,8 @@ struct tevent_req *rpccli_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
 							enum winreg_Type _type /* [in]  */,
-							uint8_t *_buffer /* [in] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */)
+							union spoolss_PrinterData _data /* [in] [subcontext(4),switch_is(type)] */,
+							uint32_t __offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */)
 {
 	struct tevent_req *req;
 	struct rpccli_spoolss_SetPrinterDataEx_state *state;
@@ -11730,8 +11730,8 @@ struct tevent_req *rpccli_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 	state->orig.in.key_name = _key_name;
 	state->orig.in.value_name = _value_name;
 	state->orig.in.type = _type;
-	state->orig.in.buffer = _buffer;
-	state->orig.in.offered = _offered;
+	state->orig.in.data = _data;
+	state->orig.in._offered = __offered;
 
 	/* Out parameters */
 
@@ -11814,8 +11814,8 @@ NTSTATUS rpccli_spoolss_SetPrinterDataEx(struct rpc_pipe_client *cli,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
 					 enum winreg_Type type /* [in]  */,
-					 uint8_t *buffer /* [in] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData data /* [in] [subcontext(4),switch_is(type)] */,
+					 uint32_t _offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */,
 					 WERROR *werror)
 {
 	struct spoolss_SetPrinterDataEx r;
@@ -11826,8 +11826,8 @@ NTSTATUS rpccli_spoolss_SetPrinterDataEx(struct rpc_pipe_client *cli,
 	r.in.key_name = key_name;
 	r.in.value_name = value_name;
 	r.in.type = type;
-	r.in.buffer = buffer;
-	r.in.offered = offered;
+	r.in.data = data;
+	r.in._offered = _offered;
 
 	status = cli->dispatch(cli,
 				mem_ctx,
@@ -11868,9 +11868,9 @@ struct tevent_req *rpccli_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							struct policy_handle *_handle /* [in] [ref] */,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
-							enum winreg_Type *_type /* [out] [ref] */,
-							uint8_t *_buffer /* [out] [ref,size_is(offered)] */,
 							uint32_t _offered /* [in]  */,
+							enum winreg_Type *_type /* [out] [ref] */,
+							union spoolss_PrinterData *_data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 							uint32_t *_needed /* [out] [ref] */)
 {
 	struct tevent_req *req;
@@ -11893,7 +11893,7 @@ struct tevent_req *rpccli_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 
 	/* Out parameters */
 	state->orig.out.type = _type;
-	state->orig.out.buffer = _buffer;
+	state->orig.out.data = _data;
 	state->orig.out.needed = _needed;
 
 	/* Result */
@@ -11943,7 +11943,7 @@ static void rpccli_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq)
 
 	/* Copy out parameters */
 	*state->orig.out.type = *state->tmp.out.type;
-	memcpy(state->orig.out.buffer, state->tmp.out.buffer, (state->tmp.in.offered) * sizeof(*state->orig.out.buffer));
+	*state->orig.out.data = *state->tmp.out.data;
 	*state->orig.out.needed = *state->tmp.out.needed;
 
 	/* Copy result */
@@ -11983,9 +11983,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
-					 enum winreg_Type *type /* [out] [ref] */,
-					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					 uint32_t offered /* [in]  */,
+					 enum winreg_Type *type /* [out] [ref] */,
+					 union spoolss_PrinterData *data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror)
 {
@@ -12014,7 +12014,7 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 
 	/* Return variables */
 	*type = *r.out.type;
-	memcpy(buffer, r.out.buffer, (r.in.offered) * sizeof(*buffer));
+	*data = *r.out.data;
 	*needed = *r.out.needed;
 
 	/* Return result */
@@ -12207,7 +12207,7 @@ struct tevent_req *rpccli_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
+						      struct spoolss_StringArray2 *_key_buffer /* [out] [ref] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */)
 {
@@ -12278,7 +12278,7 @@ static void rpccli_spoolss_EnumPrinterKey_done(struct tevent_req *subreq)
 	}
 
 	/* Copy out parameters */
-	memcpy(state->orig.out.key_buffer, state->tmp.out.key_buffer, (state->tmp.in.offered / 2) * sizeof(*state->orig.out.key_buffer));
+	*state->orig.out.key_buffer = *state->tmp.out.key_buffer;
 	*state->orig.out.needed = *state->tmp.out.needed;
 
 	/* Copy result */
@@ -12317,7 +12317,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
+				       struct spoolss_StringArray2 *key_buffer /* [out] [ref] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror)
@@ -12345,7 +12345,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	memcpy(key_buffer, r.out.key_buffer, (r.in.offered / 2) * sizeof(*key_buffer));
+	*key_buffer = *r.out.key_buffer;
 	*needed = *r.out.needed;
 
 	/* Return result */
diff --git a/librpc/gen_ndr/cli_spoolss.h b/librpc/gen_ndr/cli_spoolss.h
index 943cbce..f2c1353 100644
--- a/librpc/gen_ndr/cli_spoolss.h
+++ b/librpc/gen_ndr/cli_spoolss.h
@@ -1199,8 +1199,8 @@ struct tevent_req *rpccli_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
 							enum winreg_Type _type /* [in]  */,
-							uint8_t *_buffer /* [in] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */);
+							union spoolss_PrinterData _data /* [in] [subcontext(4),switch_is(type)] */,
+							uint32_t __offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */);
 NTSTATUS rpccli_spoolss_SetPrinterDataEx_recv(struct tevent_req *req,
 					      TALLOC_CTX *mem_ctx,
 					      WERROR *result);
@@ -1210,8 +1210,8 @@ NTSTATUS rpccli_spoolss_SetPrinterDataEx(struct rpc_pipe_client *cli,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
 					 enum winreg_Type type /* [in]  */,
-					 uint8_t *buffer /* [in] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData data /* [in] [subcontext(4),switch_is(type)] */,
+					 uint32_t _offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */,
 					 WERROR *werror);
 struct tevent_req *rpccli_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							struct tevent_context *ev,
@@ -1219,9 +1219,9 @@ struct tevent_req *rpccli_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							struct policy_handle *_handle /* [in] [ref] */,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
-							enum winreg_Type *_type /* [out] [ref] */,
-							uint8_t *_buffer /* [out] [ref,size_is(offered)] */,
 							uint32_t _offered /* [in]  */,
+							enum winreg_Type *_type /* [out] [ref] */,
+							union spoolss_PrinterData *_data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 							uint32_t *_needed /* [out] [ref] */);
 NTSTATUS rpccli_spoolss_GetPrinterDataEx_recv(struct tevent_req *req,
 					      TALLOC_CTX *mem_ctx,
@@ -1231,9 +1231,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
-					 enum winreg_Type *type /* [out] [ref] */,
-					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					 uint32_t offered /* [in]  */,
+					 enum winreg_Type *type /* [out] [ref] */,
+					 union spoolss_PrinterData *data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror);
 struct tevent_req *rpccli_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
@@ -1262,7 +1262,7 @@ struct tevent_req *rpccli_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
+						      struct spoolss_StringArray2 *_key_buffer /* [out] [ref] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */);
 NTSTATUS rpccli_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
@@ -1272,7 +1272,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
+				       struct spoolss_StringArray2 *key_buffer /* [out] [ref] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror);
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index a578ed8..9a72dd3 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -1051,7 +1051,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeviceMode(struct ndr_push *ndr, int
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, r->specversion));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverversion));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
@@ -1070,7 +1070,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeviceMode(struct ndr_push *ndr, int
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->yresolution));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, r->ttoption));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, r->collate));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logpixels));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bitsperpel));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelswidth));
@@ -1107,7 +1107,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DeviceMode(struct ndr_pull *ndr, int
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, &r->specversion));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->driverversion));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
@@ -1126,7 +1126,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DeviceMode(struct ndr_pull *ndr, int
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->yresolution));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, &r->ttoption));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, &r->collate));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logpixels));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bitsperpel));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelswidth));
@@ -8125,6 +8125,15 @@ _PUBLIC_ void ndr_print_spoolss_StringArray(struct ndr_print *ndr, const char *n
 	ndr->depth--;
 }
 
+_PUBLIC_ void ndr_print_spoolss_StringArray2(struct ndr_print *ndr, const char *name, const struct spoolss_StringArray2 *r)
+{
+	ndr_print_struct(ndr, name, "spoolss_StringArray2");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "_ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?(ndr_size_spoolss_StringArray2(r, ndr->iconv_convenience, ndr->flags) - 4) / 2:r->_ndr_size);
+	ndr_print_string_array(ndr, "string", r->string);
+	ndr->depth--;
+}
+
 static enum ndr_err_code ndr_push_spoolss_AddDriverInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -13183,6 +13192,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
 			ndr->flags = _flags_save_string;
 		}
 		{
+			uint32_t _flags_save_string_array = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+			ndr->flags = _flags_save_string_array;
+		}
+		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
@@ -13197,12 +13212,6 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
 		{
 			uint32_t _flags_save_string_array = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
-			ndr->flags = _flags_save_string_array;
-		}
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
 			ndr->flags = _flags_save_string_array;
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list