git.samba.org
/
ira
/
wip.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
s3-spoolss: fix enumprinter key client and server.
[ira/wip.git]
/
source3
/
rpc_server
/
srv_spoolss_nt.c
diff --git
a/source3/rpc_server/srv_spoolss_nt.c
b/source3/rpc_server/srv_spoolss_nt.c
index 1e66c7c021cb051768bd2ab06e2ea372ef22c290..0028ec01880711fedb226ec45501d2833a09f46b 100644
(file)
--- a/
source3/rpc_server/srv_spoolss_nt.c
+++ b/
source3/rpc_server/srv_spoolss_nt.c
@@
-8786,12
+8786,20
@@
WERROR _spoolss_EnumPrinterKey(pipes_struct *p,
goto done;
}
goto done;
}
- array = talloc_zero_array(r->out.key_buffer, const char *, num_keys +
1
);
+ array = talloc_zero_array(r->out.key_buffer, const char *, num_keys +
2
);
if (!array) {
result = WERR_NOMEM;
goto done;
}
if (!array) {
result = WERR_NOMEM;
goto done;
}
+ if (!num_keys) {
+ array[0] = talloc_strdup(array, "");
+ if (!array[0]) {
+ result = WERR_NOMEM;
+ goto done;
+ }
+ }
+
for (i=0; i < num_keys; i++) {
DEBUG(10,("_spoolss_EnumPrinterKey: adding keyname: %s\n",
for (i=0; i < num_keys; i++) {
DEBUG(10,("_spoolss_EnumPrinterKey: adding keyname: %s\n",
@@
-8809,13
+8817,14
@@
WERROR _spoolss_EnumPrinterKey(pipes_struct *p,
goto done;
}
goto done;
}
+ *r->out._ndr_size = r->in.offered / 2;
*r->out.needed = blob.length;
if (r->in.offered < *r->out.needed) {
result = WERR_MORE_DATA;
} else {
result = WERR_OK;
*r->out.needed = blob.length;
if (r->in.offered < *r->out.needed) {
result = WERR_MORE_DATA;
} else {
result = WERR_OK;
- r->out.key_buffer->string = array;
+ r->out.key_buffer->string
_array
= array;
}
done:
}
done: