__owur static ossl_inline int PACKET_get_net_2_len(PACKET *pkt, size_t *data)
{
unsigned int i;
- int ret;
+ int ret = PACKET_get_net_2(pkt, &i);
- ret = PACKET_get_net_2(pkt, &i);
if (ret)
*data = (size_t)i;
__owur static ossl_inline int PACKET_get_net_3_len(PACKET *pkt, size_t *data)
{
unsigned long i;
- int ret;
+ int ret = PACKET_get_net_3(pkt, &i);
- ret = PACKET_get_net_3(pkt, &i);
if (ret)
*data = (size_t)i;
__owur static ossl_inline int PACKET_get_net_4_len(PACKET *pkt, size_t *data)
{
unsigned long i;
- int ret;
+ int ret = PACKET_get_net_4(pkt, &i);
- ret = PACKET_get_net_4(pkt, &i);
if (ret)
*data = (size_t)i;
__owur static ossl_inline int PACKET_get_1_len(PACKET *pkt, size_t *data)
{
unsigned int i;
- int ret;
+ int ret = PACKET_get_1(pkt, &i);
- ret = PACKET_get_1(pkt, &i);
if (ret)
*data = (size_t)i;
/* The buffer where we store the output data */
BUF_MEM *buf;
+ /* Fixed sized buffer which can be used as an alternative to buf */
+ unsigned char *staticbuf;
+
/*
* Offset into the buffer where we are currently writing. We use an offset
* in case the buffer grows and gets reallocated.
*/
int WPACKET_init(WPACKET *pkt, BUF_MEM *buf);
+/*
+ * Same as WPACKET_init_len except we do not use a growable BUF_MEM structure.
+ * A fixed buffer of memory |buf| of size |len| is used instead. A failure will
+ * occur if you attempt to write beyond the end of the buffer
+ */
+int WPACKET_init_static_len(WPACKET *pkt, unsigned char *buf, size_t len,
+ size_t lenbytes);
/*
* Set the flags to be applied to the current sub-packet
*/
/*
* 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);