&creds, &arch))
return NULL;
+ if (server[0] != '\\' || server[1] != '\\') {
+ PyErr_SetString(spoolss_error, "bad server name");
+ return NULL;
+ }
+
+ server += 2;
+
/* Call rpc function */
- if (!(cli = open_pipe_creds(
- server, creds, cli_spoolss_initialise, &errstr))) {
+ if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
PyErr_SetString(spoolss_error, errstr);
free(errstr);
goto done;
&arch, &PyDict_Type, &creds))
return NULL;
+ if (server[0] != '\\' || server[1] != '\\') {
+ PyErr_SetString(spoolss_error, "bad server name");
+ return NULL;
+ }
+
+ server += 2;
+
/* Call rpc function */
- if (!(cli = open_pipe_creds(
- server, creds, cli_spoolss_initialise, &errstr))) {
+ if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
PyErr_SetString(spoolss_error, errstr);
free(errstr);
goto done;
uint32 level;
PyObject *info, *result = NULL, *creds = NULL;
WERROR werror;
- TALLOC_CTX *mem_ctx;
- struct cli_state *cli;
+ TALLOC_CTX *mem_ctx = NULL;
+ struct cli_state *cli = NULL;
PRINTER_DRIVER_CTR ctr;
union {
DRIVER_INFO_3 driver_3;
return NULL;
}
- if (!(cli = open_pipe_creds(
- server, creds, cli_spoolss_initialise, &errstr))) {
+ if (!(cli = open_pipe_creds(server, creds, PIPE_SPOOLSS, &errstr))) {
PyErr_SetString(spoolss_error, errstr);
free(errstr);
goto done;
if (!get_level_value(info, &level)) {
PyErr_SetString(spoolss_error, "invalid info level");
- return NULL;
+ goto done;
}
if (level != 3) {
result = Py_None;
done:
- cli_shutdown(cli);
- talloc_destroy(mem_ctx);
+ if (cli)
+ cli_shutdown(cli);
+
+ if (mem_ctx)
+ talloc_destroy(mem_ctx);
return result;