if (ctx->last_len < AES_BLOCK_SIZE) {
size_t len = MIN(AES_BLOCK_SIZE - ctx->last_len, msg_len);
- memcpy(&ctx->last[ctx->last_len], msg, len);
- msg += len;
- msg_len -= len;
- ctx->last_len += len;
+ if (len > 0) {
+ memcpy(&ctx->last[ctx->last_len], msg, len);
+ msg += len;
+ msg_len -= len;
+ ctx->last_len += len;
+ }
}
if (msg_len == 0) {
TALLOC_FREE(rec_priv->node);
rec_priv->node = node;
- memcpy(this_val.dptr, data.dptr, node->valuesize);
+ if (node->valuesize > 0) {
+ memcpy(this_val.dptr, data.dptr, node->valuesize);
+ }
parent = NULL;
p = &db_ctx->tree.rb_node;
data->data = newp;
data->length = data->ofs+len;
}
- memcpy(data->data + data->ofs, p, len);
- data->ofs += len;
+ if (len > 0) {
+ memcpy(data->data + data->ofs, p, len);
+ data->ofs += len;
+ }
return true;
}
}
needed = tmp;
- if (needed <= buflen) {
+ if (needed <= buflen && thislen > 0) {
memcpy(p, iov[i].iov_base, thislen);
p += thislen;
}
data.dptr = talloc_array(talloc_tos(), uint8_t, data_len);
SMB_ASSERT(data.dptr != NULL);
- memcpy(data.dptr, br_lck->lock_data, lock_len);
+ if (lock_len > 0) {
+ memcpy(data.dptr, br_lck->lock_data, lock_len);
+ }
memcpy(data.dptr + lock_len, &br_lck->num_read_oplocks,
sizeof(br_lck->num_read_oplocks));
SCVAL(p,1,dos_namelen);
SSVAL(p,2,ea_list->ea.value.length);
strlcpy(p+4, dos_ea_name, dos_namelen+1);
- memcpy( p + 4 + dos_namelen + 1, ea_list->ea.value.data, ea_list->ea.value.length);
+ if (ea_list->ea.value.length > 0) {
+ memcpy(p + 4 + dos_namelen + 1,
+ ea_list->ea.value.data,
+ ea_list->ea.value.length);
+ }
total_data_size -= 4 + dos_namelen + 1 + ea_list->ea.value.length;
p += 4 + dos_namelen + 1 + ea_list->ea.value.length;
SCVAL(data, 1, nlen);
SSVAL(data, 2, eas[i].value.length);
memcpy(data+4, eas[i].name.s, nlen+1);
- memcpy(data+4+nlen+1, eas[i].value.data, eas[i].value.length);
+ if (eas[i].value.length > 0) {
+ memcpy(data + 4 + nlen + 1,
+ eas[i].value.data,
+ eas[i].value.length);
+ }
data += 4+nlen+1+eas[i].value.length;
}
}
/* build the data section */
nt.in.data = data_blob_talloc(mem_ctx, NULL, sd_blob.length + ea_blob.length);
- memcpy(nt.in.data.data, sd_blob.data, sd_blob.length);
- memcpy(nt.in.data.data+sd_blob.length, ea_blob.data, ea_blob.length);
+ if (sd_blob.length > 0) {
+ memcpy(nt.in.data.data, sd_blob.data, sd_blob.length);
+ }
+ if (ea_blob.length > 0) {
+ memcpy(nt.in.data.data + sd_blob.length,
+ ea_blob.data,
+ ea_blob.length);
+ }
/* send the request on its way */
req = smb_raw_nttrans_send(tree, &nt);
*/
size_t smbcli_req_append_blob(struct smbcli_request *req, const DATA_BLOB *blob)
{
- smbcli_req_grow_allocation(req, req->out.data_size + blob->length);
- memcpy(req->out.data + req->out.data_size, blob->data, blob->length);
- smbcli_req_grow_data(req, req->out.data_size + blob->length);
+ if (blob->length > 0) {
+ smbcli_req_grow_allocation(req,
+ req->out.data_size + blob->length);
+ memcpy(req->out.data + req->out.data_size,
+ blob->data,
+ blob->length);
+ smbcli_req_grow_data(req, req->out.data_size + blob->length);
+ }
return blob->length;
}
*/
size_t smbcli_req_append_bytes(struct smbcli_request *req, const uint8_t *bytes, size_t byte_len)
{
- smbcli_req_grow_allocation(req, byte_len + req->out.data_size);
- memcpy(req->out.data + req->out.data_size, bytes, byte_len);
- smbcli_req_grow_data(req, byte_len + req->out.data_size);
+ if (byte_len > 0) {
+ smbcli_req_grow_allocation(req, byte_len + req->out.data_size);
+ memcpy(req->out.data + req->out.data_size, bytes, byte_len);
+ smbcli_req_grow_data(req, byte_len + req->out.data_size);
+ }
return byte_len;
}
SSVAL(req->out.vwv, VWV(s), parms->in.setup[s]);
}
- memcpy(req->out.data,
- parms->in.params.data,
- parms->in.params.length);
- memcpy(req->out.data + parms->in.params.length,
- parms->in.data.data,
- parms->in.data.length);
+ if (parms->in.params.length > 0) {
+ memcpy(req->out.data,
+ parms->in.params.data,
+ parms->in.params.length);
+ }
+ if (parms->in.data.length > 0) {
+ memcpy(req->out.data + parms->in.params.length,
+ parms->in.data.data,
+ parms->in.data.length);
+ }
if (command == SMBtrans && parms->in.trans_name) {
pipe_name = parms->in.trans_name;
timeout_msec = req->transport->options.request_timeout * 1000;
- memcpy(req->out.vwv,
- parms->in.setup,
- parms->in.setup_count * 2);
+ if (parms->in.setup_count > 0) {
+ memcpy(
+ req->out.vwv, parms->in.setup, parms->in.setup_count * 2);
+ }
- memcpy(req->out.data,
- parms->in.params.data,
- parms->in.params.length);
- memcpy(req->out.data + parms->in.params.length,
- parms->in.data.data,
- parms->in.data.length);
+ if (parms->in.params.length > 0) {
+ memcpy(req->out.data,
+ parms->in.params.data,
+ parms->in.params.length);
+ }
+ if (parms->in.data.length > 0) {
+ memcpy(req->out.data + parms->in.params.length,
+ parms->in.data.data,
+ parms->in.data.length);
+ }
req->subreqs[0] = smb1cli_trans_send(req,
req->transport->ev,
status = NT_STATUS_NO_MEMORY;
goto fail;
}
- memcpy(locks, dbuf.dptr, dbuf.dsize);
+ if (dbuf.dsize > 0) {
+ memcpy(locks, dbuf.dptr, dbuf.dsize);
+ }
locks[count] = lock;
dbuf.dptr = (unsigned char *)locks;
SIVAL(this_req->out.vwv, 31, PTR_DIFF(data, trans->out.data.data));
SCVAL(this_req->out.vwv, 35, trans->out.setup_count);
- memcpy((char *)(this_req->out.vwv) + VWV(18), trans->out.setup,
- sizeof(uint16_t) * trans->out.setup_count);
+ if (trans->out.setup_count > 0) {
+ memcpy((char *)(this_req->out.vwv) + VWV(18),
+ trans->out.setup,
+ sizeof(uint16_t) * trans->out.setup_count);
+ }
memset(this_req->out.data, 0, align1);
if (this_param != 0) {
memcpy(this_req->out.data + align1, params, this_param);