Lines Matching refs:iobuf
7 * @brief The iobuf structure that holds the data, its capacity and
25 struct sss_iobuf *iobuf;
28 iobuf = talloc_zero(mem_ctx, struct sss_iobuf);
29 if (iobuf == NULL) {
33 buf = talloc_zero_array(iobuf, uint8_t, size);
35 talloc_free(iobuf);
43 iobuf->data = buf;
44 iobuf->size = size;
45 iobuf->capacity = capacity;
46 iobuf->dp = 0;
48 return iobuf;
55 struct sss_iobuf *iobuf;
57 iobuf = sss_iobuf_init_empty(mem_ctx, size, size);
58 if (iobuf == NULL) {
63 memcpy(iobuf->data, data, size);
66 return iobuf;
69 size_t sss_iobuf_get_len(struct sss_iobuf *iobuf)
71 if (iobuf == NULL) {
75 return iobuf->dp;
78 size_t sss_iobuf_get_capacity(struct sss_iobuf *iobuf)
80 if (iobuf == NULL) {
84 return iobuf->capacity;
87 size_t sss_iobuf_get_size(struct sss_iobuf *iobuf)
89 if (iobuf == NULL) {
93 return iobuf->size;
96 uint8_t *sss_iobuf_get_data(struct sss_iobuf *iobuf)
98 if (iobuf == NULL) {
102 return iobuf->data;
105 static size_t iobuf_get_len(struct sss_iobuf *iobuf)
107 if (iobuf == NULL) {
111 return (iobuf->size - iobuf->dp);
114 static errno_t ensure_bytes(struct sss_iobuf *iobuf,
121 if (iobuf == NULL) {
125 wantsize = iobuf->dp + nbytes;
126 if (wantsize <= iobuf->size) {
131 /* Else, try to extend the iobuf */
132 if (wantsize > iobuf->capacity) {
138 for (newsize = iobuf->size;
139 (newsize < wantsize) && (newsize < iobuf->capacity);
143 if (newsize > iobuf->capacity) {
144 newsize = iobuf->capacity;
147 newdata = talloc_realloc(iobuf, iobuf->data, uint8_t, newsize);
152 iobuf->data = newdata;
153 iobuf->size = newsize;
158 static inline uint8_t *iobuf_ptr(struct sss_iobuf *iobuf)
160 return iobuf->data + iobuf->dp;
163 errno_t sss_iobuf_read(struct sss_iobuf *iobuf,
170 if (iobuf == NULL || _buf == NULL) {
174 remaining = iobuf_get_len(iobuf);
179 safealign_memcpy(_buf, iobuf_ptr(iobuf), len, &iobuf->dp);
187 errno_t sss_iobuf_read_len(struct sss_iobuf *iobuf,
194 ret = sss_iobuf_read(iobuf, len, _buf, &read_bytes);
206 errno_t sss_iobuf_write_len(struct sss_iobuf *iobuf,
212 if (iobuf == NULL || buf == NULL) {
216 ret = ensure_bytes(iobuf, len);
221 safealign_memcpy(iobuf_ptr(iobuf), buf, len, &iobuf->dp);
226 errno_t sss_iobuf_read_uint32(struct sss_iobuf *iobuf,
229 SAFEALIGN_COPY_UINT32_CHECK(_val, iobuf_ptr(iobuf),
230 iobuf->capacity, &iobuf->dp);
234 errno_t sss_iobuf_read_int32(struct sss_iobuf *iobuf,
237 SAFEALIGN_COPY_INT32_CHECK(_val, iobuf_ptr(iobuf),
238 iobuf->capacity, &iobuf->dp);
242 errno_t sss_iobuf_write_uint32(struct sss_iobuf *iobuf,
247 ret = ensure_bytes(iobuf, sizeof(uint32_t));
252 SAFEALIGN_SETMEM_UINT32(iobuf_ptr(iobuf), val, &iobuf->dp);
256 errno_t sss_iobuf_write_int32(struct sss_iobuf *iobuf,
261 ret = ensure_bytes(iobuf, sizeof(int32_t));
266 SAFEALIGN_SETMEM_INT32(iobuf_ptr(iobuf), val, &iobuf->dp);
270 errno_t sss_iobuf_read_stringz(struct sss_iobuf *iobuf,
276 if (iobuf == NULL) {
286 end = memchr(iobuf_ptr(iobuf), '\0', sss_iobuf_get_size(iobuf));
291 len = end + 1 - iobuf_ptr(iobuf);
292 if (sss_iobuf_get_size(iobuf) < len) {
296 *_out = (const char *) iobuf_ptr(iobuf);
297 iobuf->dp += len;
301 errno_t sss_iobuf_write_stringz(struct sss_iobuf *iobuf,
304 if (iobuf == NULL || str == NULL) {
308 SAFEALIGN_MEMCPY_CHECK(iobuf_ptr(iobuf),
310 sss_iobuf_get_size(iobuf),
311 &iobuf->dp);