diff --git a/src/cmdu.c b/src/cmdu.c index 825c743d1514d8229738d2666b92b52b248e2ebe..13e972bf8a33dc434092d445bcc408eda4a9c6e8 100644 --- a/src/cmdu.c +++ b/src/cmdu.c @@ -313,9 +313,14 @@ int cmdu_put_tlv(struct cmdu_buff *c, struct tlv *t) return -1; } - *c->tail = t->type; - buf_put_be16(c->tail + 1, t->len); - memcpy(c->tail + 3, t->data, tlen); + if ((uint8_t *)t != c->tail) { + fprintf(stderr, "%s: tlv outside cmdu buffer; use cmdu_copy_tlv() instead\n", + __func__); + return -1; + } + + + buf_put_be16(c->tail + 1, tlen); c->tail += tlen + sizeof(*t); c->datalen += tlen + sizeof(*t);