summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_ntsvcs_nt.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server/srv_ntsvcs_nt.c')
-rw-r--r--source3/rpc_server/srv_ntsvcs_nt.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/source3/rpc_server/srv_ntsvcs_nt.c b/source3/rpc_server/srv_ntsvcs_nt.c
index 553707bfe5..357478f274 100644
--- a/source3/rpc_server/srv_ntsvcs_nt.c
+++ b/source3/rpc_server/srv_ntsvcs_nt.c
@@ -76,9 +76,8 @@ WERROR _PNP_GetDeviceList(pipes_struct *p,
{
char *devicepath;
uint32_t size = 0;
- char **multi_sz = NULL;
- size_t multi_sz_len;
- uint16_t *multi_sz_buf;
+ const char **multi_sz = NULL;
+ DATA_BLOB blob;
if ((r->in.flags & CM_GETIDLIST_FILTER_SERVICE) &&
(!r->in.filter)) {
@@ -95,23 +94,22 @@ WERROR _PNP_GetDeviceList(pipes_struct *p,
return WERR_CM_BUFFER_SMALL;
}
- multi_sz = talloc_zero_array(p->mem_ctx, char *, 2);
+ multi_sz = talloc_zero_array(p->mem_ctx, const char *, 2);
if (!multi_sz) {
return WERR_NOMEM;
}
multi_sz[0] = devicepath;
- multi_sz_len = regval_build_multi_sz(multi_sz, &multi_sz_buf);
- if (!multi_sz_len) {
+ if (!push_reg_multi_sz(multi_sz, &blob, multi_sz)) {
return WERR_NOMEM;
}
- if (*r->in.length < multi_sz_len/2) {
+ if (*r->in.length < blob.length/2) {
return WERR_CM_BUFFER_SMALL;
}
- memcpy(r->out.buffer, multi_sz_buf, multi_sz_len);
+ memcpy(r->out.buffer, blob.data, blob.length);
return WERR_OK;
}