if (BUF_MEM_grow(pkt->buf, newlen) == 0)
return 0;
}
- *allocbytes = GETBUF(pkt) + pkt->curr;
+ if (allocbytes != NULL)
+ *allocbytes = GETBUF(pkt) + pkt->curr;
return 1;
}
return 1;
}
+unsigned char *WPACKET_get_curr(WPACKET *pkt)
+{
+ return GETBUF(pkt) + pkt->curr;
+}
+
void WPACKET_cleanup(WPACKET *pkt)
{
WPACKET_SUB *sub, *parent;
/*
* Allocate bytes in the WPACKET for the output. This reserves the bytes
* and counts them as "written", but doesn't actually do the writing. A pointer
- * to the allocated bytes is stored in |*allocbytes|.
+ * to the allocated bytes is stored in |*allocbytes|. |allocbytes| may be NULL.
* WARNING: the allocated bytes must be filled in immediately, without further
* WPACKET_* calls. If not then the underlying buffer may be realloc'd and
* change its location.
*/
int WPACKET_get_length(WPACKET *pkt, size_t *len);
+/*
+ * Returns a pointer to the current write location, but does not allocate any
+ * bytes.
+ */
+unsigned char *WPACKET_get_curr(WPACKET *pkt);
+
/* Release resources in a WPACKET if a failure has occurred. */
void WPACKET_cleanup(WPACKET *pkt);