1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* 2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Dynamic data buffer 3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2007-2009, Jouni Malinen <j@w1.fi> 4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify 6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as 7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation. 8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD 10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license. 11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details. 13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "includes.h" 16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "common.h" 18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "wpabuf.h" 19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic void wpabuf_overflow(const struct wpabuf *buf, size_t len) 21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_printf(MSG_ERROR, "wpabuf %p (size=%lu used=%lu) overflow len=%lu", 23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf, (unsigned long) buf->size, (unsigned long) buf->used, 24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt (unsigned long) len); 25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt abort(); 26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint wpabuf_resize(struct wpabuf **_buf, size_t add_len) 30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *buf = *_buf; 32dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt if (buf == NULL) { 33dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt *_buf = wpabuf_alloc(add_len); 34dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt return *_buf == NULL ? -1 : 0; 35dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt } 36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf->used + add_len > buf->size) { 37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt unsigned char *nbuf; 38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf->ext_data) { 39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt nbuf = os_realloc(buf->ext_data, buf->used + add_len); 40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (nbuf == NULL) 41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return -1; 42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt os_memset(nbuf + buf->used, 0, add_len); 43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->ext_data = nbuf; 44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } else { 45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt nbuf = os_realloc(buf, sizeof(struct wpabuf) + 46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->used + add_len); 47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (nbuf == NULL) 48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return -1; 49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf = (struct wpabuf *) nbuf; 50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt os_memset(nbuf + sizeof(struct wpabuf) + buf->used, 0, 51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt add_len); 52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *_buf = buf; 53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->size = buf->used + add_len; 55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return 0; 58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * wpabuf_alloc - Allocate a wpabuf of the given size 63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @len: Length for the allocated buffer 64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Returns: Buffer to the allocated wpabuf or %NULL on failure 65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_alloc(size_t len) 67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *buf = os_zalloc(sizeof(struct wpabuf) + len); 69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf == NULL) 70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->size = len; 72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return buf; 73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_alloc_ext_data(u8 *data, size_t len) 77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *buf = os_zalloc(sizeof(struct wpabuf)); 79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf == NULL) 80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->size = len; 83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->used = len; 84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->ext_data = data; 85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return buf; 87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_alloc_copy(const void *data, size_t len) 91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *buf = wpabuf_alloc(len); 93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf) 94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put_data(buf, data, len); 95526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return buf; 96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 97526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 98526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 99526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_dup(const struct wpabuf *src) 100526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 101526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *buf = wpabuf_alloc(wpabuf_len(src)); 102526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf) 103526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put_data(buf, wpabuf_head(src), wpabuf_len(src)); 104526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return buf; 105526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 106526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 107526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 108526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 109526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * wpabuf_free - Free a wpabuf 110526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @buf: wpabuf buffer 111526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 112526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid wpabuf_free(struct wpabuf *buf) 113526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 114526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf == NULL) 115526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return; 116526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt os_free(buf->ext_data); 117526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt os_free(buf); 118526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 119526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 120526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 121526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid * wpabuf_put(struct wpabuf *buf, size_t len) 122526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 123526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt void *tmp = wpabuf_mhead_u8(buf) + wpabuf_len(buf); 124526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->used += len; 125526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf->used > buf->size) { 126526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_overflow(buf, len); 127526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 128526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return tmp; 129526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 130526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 131526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 132526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 133526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * wpabuf_concat - Concatenate two buffers into a newly allocated one 134526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @a: First buffer 135526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @b: Second buffer 136526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Returns: wpabuf with concatenated a + b data or %NULL on failure 137526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 138526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Both buffers a and b will be freed regardless of the return value. Input 139526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * buffers can be %NULL which is interpreted as an empty buffer. 140526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 141526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_concat(struct wpabuf *a, struct wpabuf *b) 142526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 143526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *n = NULL; 144526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt size_t len = 0; 145526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 146526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (b == NULL) 147526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return a; 148526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 149526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (a) 150526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt len += wpabuf_len(a); 151526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (b) 152526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt len += wpabuf_len(b); 153526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 154526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt n = wpabuf_alloc(len); 155526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (n) { 156526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (a) 157526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put_buf(n, a); 158526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (b) 159526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put_buf(n, b); 160526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 161526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 162526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(a); 163526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(b); 164526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 165526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return n; 166526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 167526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 168526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 169526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 170526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * wpabuf_zeropad - Pad buffer with 0x00 octets (prefix) to specified length 171526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @buf: Buffer to be padded 172526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @len: Length for the padded buffer 173526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Returns: wpabuf padded to len octets or %NULL on failure 174526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 175526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * If buf is longer than len octets or of same size, it will be returned as-is. 176526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Otherwise a new buffer is allocated and prefixed with 0x00 octets followed 177526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * by the source data. The source buffer will be freed on error, i.e., caller 178526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * will only be responsible on freeing the returned buffer. If buf is %NULL, 179526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * %NULL will be returned. 180526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 181526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * wpabuf_zeropad(struct wpabuf *buf, size_t len) 182526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 183526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *ret; 184526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt size_t blen; 185526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 186526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (buf == NULL) 187526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 188526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 189526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt blen = wpabuf_len(buf); 190526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (blen >= len) 191526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return buf; 192526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 193526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt ret = wpabuf_alloc(len); 194526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (ret) { 195526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt os_memset(wpabuf_put(ret, len - blen), 0, len - blen); 196526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put_buf(ret, buf); 197526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 198526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(buf); 199526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 200526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return ret; 201526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 202526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 203526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 204526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid wpabuf_printf(struct wpabuf *buf, char *fmt, ...) 205526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 206526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt va_list ap; 207526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt void *tmp = wpabuf_mhead_u8(buf) + wpabuf_len(buf); 208526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt int res; 209526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 210526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt va_start(ap, fmt); 211526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt res = vsnprintf(tmp, buf->size - buf->used, fmt, ap); 212526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt va_end(ap); 213526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (res < 0 || (size_t) res >= buf->size - buf->used) 214526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_overflow(buf, res); 215526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt buf->used += res; 216526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 217