Mercurial > dropbear
comparison buffer.c @ 1676:d5cdc60db08e
ext-info handling for server-sig-algs
only client side is handled
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 19 May 2020 00:31:41 +0800 |
parents | 5916af64acd4 |
children | 1051e4eea25a |
comparison
equal
deleted
inserted
replaced
1675:ae41624c2198 | 1676:d5cdc60db08e |
---|---|
226 | 226 |
227 return ret; | 227 return ret; |
228 } | 228 } |
229 | 229 |
230 /* Return a string as a newly allocated buffer */ | 230 /* Return a string as a newly allocated buffer */ |
231 buffer * buf_getstringbuf(buffer *buf) { | 231 static buffer * buf_getstringbuf_int(buffer *buf, int incllen) { |
232 buffer *ret = NULL; | 232 buffer *ret = NULL; |
233 unsigned int len = buf_getint(buf); | 233 unsigned int len = buf_getint(buf); |
234 int extra = 0; | |
234 if (len > MAX_STRING_LEN) { | 235 if (len > MAX_STRING_LEN) { |
235 dropbear_exit("String too long"); | 236 dropbear_exit("String too long"); |
236 } | 237 } |
237 ret = buf_new(len); | 238 if (incllen) { |
239 extra = 4; | |
240 } | |
241 ret = buf_new(len+extra); | |
242 if (incllen) { | |
243 buf_putint(ret, len); | |
244 } | |
238 memcpy(buf_getwriteptr(ret, len), buf_getptr(buf, len), len); | 245 memcpy(buf_getwriteptr(ret, len), buf_getptr(buf, len), len); |
239 buf_incrpos(buf, len); | 246 buf_incrpos(buf, len); |
240 buf_incrlen(ret, len); | 247 buf_incrlen(ret, len); |
248 buf_setpos(ret, 0); | |
241 return ret; | 249 return ret; |
250 } | |
251 | |
252 /* Return a string as a newly allocated buffer */ | |
253 buffer * buf_getstringbuf(buffer *buf) { | |
254 return buf_getstringbuf_int(buf, 0); | |
255 } | |
256 | |
257 /* Returns a string in a new buffer, including the length */ | |
258 buffer * buf_getbuf(buffer *buf) { | |
259 return buf_getstringbuf_int(buf, 1); | |
242 } | 260 } |
243 | 261 |
244 /* Just increment the buffer position the same as if we'd used buf_getstring, | 262 /* Just increment the buffer position the same as if we'd used buf_getstring, |
245 * but don't bother copying/malloc()ing for it */ | 263 * but don't bother copying/malloc()ing for it */ |
246 void buf_eatstring(buffer *buf) { | 264 void buf_eatstring(buffer *buf) { |