s3-spoolss: add winreg_add_core_driver_internal()
authorGünther Deschner <gd@samba.org>
Mon, 31 Oct 2016 17:07:50 +0000 (18:07 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 9 May 2017 14:43:13 +0000 (16:43 +0200)
Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/rpc_server/spoolss/srv_spoolss_util.c
source3/rpc_server/spoolss/srv_spoolss_util.h

index dd36c416da3b20a3e591b9a8ace6b3a9e692e133..743ad5ca04d0ab15dbbef5843c68abfa1ab8799c 100644 (file)
@@ -548,6 +548,35 @@ WERROR winreg_get_core_driver_internal(TALLOC_CTX *mem_ctx,
        return result;
 }
 
+WERROR winreg_add_core_driver_internal(TALLOC_CTX *mem_ctx,
+                                      const struct auth_session_info *session_info,
+                                      struct messaging_context *msg_ctx,
+                                      const char *architecture,
+                                      const struct spoolss_CorePrinterDriver *core_printer_driver)
+{
+       WERROR result;
+       struct dcerpc_binding_handle *b;
+       TALLOC_CTX *tmp_ctx;
+
+       tmp_ctx = talloc_stackframe();
+       if (tmp_ctx == NULL) {
+               return WERR_NOT_ENOUGH_MEMORY;
+       }
+
+       result = winreg_printer_binding_handle(tmp_ctx, session_info, msg_ctx, &b);
+       if (!W_ERROR_IS_OK(result)) {
+               talloc_free(tmp_ctx);
+               return result;
+       }
+
+       result = winreg_add_core_driver(mem_ctx,
+                                       b,
+                                       architecture,
+                                       core_printer_driver);
+
+       talloc_free(tmp_ctx);
+       return result;
+}
 
 WERROR winreg_get_printer_secdesc_internal(TALLOC_CTX *mem_ctx,
                                           const struct auth_session_info *session_info,
index 3204a76de9bb594b012965e2e226a11d3fbf694d..2ab7bda03ed0c764f3aca0e8fed8a794348048ba 100644 (file)
@@ -163,5 +163,10 @@ WERROR winreg_get_core_driver_internal(TALLOC_CTX *mem_ctx,
                                       const char *architecture,
                                       const struct GUID *core_driver_guid,
                                       struct spoolss_CorePrinterDriver **core_printer_driver);
+WERROR winreg_add_core_driver_internal(TALLOC_CTX *mem_ctx,
+                                      const struct auth_session_info *session_info,
+                                      struct messaging_context *msg_ctx,
+                                      const char *architecture,
+                                      const struct spoolss_CorePrinterDriver *core_printer_driver);
 
 #endif /* _SRV_SPOOLSS_UITL_H */