summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/bss_mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bio/bss_mem.c')
-rw-r--r--src/lib/libcrypto/bio/bss_mem.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/lib/libcrypto/bio/bss_mem.c b/src/lib/libcrypto/bio/bss_mem.c
index a4edb711ae..e7ab9cb3a3 100644
--- a/src/lib/libcrypto/bio/bss_mem.c
+++ b/src/lib/libcrypto/bio/bss_mem.c
@@ -284,6 +284,7 @@ static int mem_gets(BIO *bp, char *buf, int size)
284 284
285 BIO_clear_retry_flags(bp); 285 BIO_clear_retry_flags(bp);
286 j=bm->length; 286 j=bm->length;
287 if ((size-1) < j) j=size-1;
287 if (j <= 0) 288 if (j <= 0)
288 { 289 {
289 *buf='\0'; 290 *buf='\0';
@@ -292,17 +293,18 @@ static int mem_gets(BIO *bp, char *buf, int size)
292 p=bm->data; 293 p=bm->data;
293 for (i=0; i<j; i++) 294 for (i=0; i<j; i++)
294 { 295 {
295 if (p[i] == '\n') break; 296 if (p[i] == '\n')
296 } 297 {
297 if (i == j) 298 i++;
298 { 299 break;
299 BIO_set_retry_read(bp); 300 }
300 /* return(-1); change the semantics 0.6.6a */
301 } 301 }
302 else 302
303 i++; 303 /*
304 /* i is the max to copy */ 304 * i is now the max num of bytes to copy, either j or up to
305 if ((size-1) < i) i=size-1; 305 * and including the first newline
306 */
307
306 i=mem_read(bp,buf,i); 308 i=mem_read(bp,buf,i);
307 if (i > 0) buf[i]='\0'; 309 if (i > 0) buf[i]='\0';
308 ret=i; 310 ret=i;