summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorSamuel Cabrero <scabrero@suse.de>2017-09-21 09:53:35 +0200
committerJeremy Allison <jra@samba.org>2017-10-06 05:21:25 +0200
commitfc03049ca1721c25c6ad3d01cba2501af3f39b93 (patch)
tree351d38ec07a3bd3b3c355ccc2d7cd65c1cb25423 /source3/rpc_server
parente1a8c9b27014f4f576d1508de4b380b7517c0861 (diff)
downloadsamba-fc03049ca1721c25c6ad3d01cba2501af3f39b93.tar.gz
s3: spoolss: Fix GUID string format on GetPrinter info
Fix regression introduced by commit a4157e7c5d75 which removed the braces around the printer GUID in the printer info level 7 structure. MS-RPRN section 2.2 says this protocol uses curly-braced GUIDs so printers are deleted from the directory by the domain controller's pruning service. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12993 Signed-off-by: Samuel Cabrero <scabrero@suse.de> Reviewed-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Fri Oct 6 05:21:25 CEST 2017 on sn-devel-144
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/spoolss/srv_spoolss_nt.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 663c62381d5..1476dc6bf15 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -4241,7 +4241,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
if (is_printer_published(tmp_ctx, session_info, msg_ctx,
servername, printer, &pinfo2)) {
struct GUID guid;
- struct GUID_txt_buf guid_txt;
+ char *guidstr;
werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx,
printer, &guid);
if (!W_ERROR_IS_OK(werr)) {
@@ -4288,9 +4288,19 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
printer));
}
}
- r->guid = talloc_strdup_upper(mem_ctx,
- GUID_buf_string(&guid, &guid_txt));
+
+ /* [MS-RPRN] section 2.2: must use curly-braced GUIDs */
+ guidstr = GUID_string2(mem_ctx, &guid);
+ if (guidstr == NULL) {
+ werr = WERR_NOT_ENOUGH_MEMORY;
+ goto out_tmp_free;
+ }
+ /* Convert GUID string to uppercase otherwise printers
+ * are pruned */
+ r->guid = talloc_strdup_upper(mem_ctx, guidstr);
r->action = DSPRINT_PUBLISH;
+
+ TALLOC_FREE(guidstr);
} else {
r->guid = talloc_strdup(mem_ctx, "");
r->action = DSPRINT_UNPUBLISH;