summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/bss_mem.c
diff options
context:
space:
mode:
authorbeck <>1999-09-29 04:37:45 +0000
committerbeck <>1999-09-29 04:37:45 +0000
commitde8f24ea083384bb66b32ec105dc4743c5663cdf (patch)
tree1412176ae62a3cab2cf2b0b92150fcbceaac6092 /src/lib/libcrypto/bio/bss_mem.c
parentcb929d29896bcb87c2a97417fbd03e50078fc178 (diff)
downloadopenbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.gz
openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.bz2
openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.zip
OpenSSL 0.9.4 merge
Diffstat (limited to 'src/lib/libcrypto/bio/bss_mem.c')
-rw-r--r--src/lib/libcrypto/bio/bss_mem.c59
1 files changed, 19 insertions, 40 deletions
diff --git a/src/lib/libcrypto/bio/bss_mem.c b/src/lib/libcrypto/bio/bss_mem.c
index 40c4e39f02..7e749a503e 100644
--- a/src/lib/libcrypto/bio/bss_mem.c
+++ b/src/lib/libcrypto/bio/bss_mem.c
@@ -59,9 +59,8 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <errno.h> 60#include <errno.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include "bio.h" 62#include <openssl/bio.h>
63 63
64#ifndef NOPROTO
65static int mem_write(BIO *h,char *buf,int num); 64static int mem_write(BIO *h,char *buf,int num);
66static int mem_read(BIO *h,char *buf,int size); 65static int mem_read(BIO *h,char *buf,int size);
67static int mem_puts(BIO *h,char *str); 66static int mem_puts(BIO *h,char *str);
@@ -69,16 +68,6 @@ static int mem_gets(BIO *h,char *str,int size);
69static long mem_ctrl(BIO *h,int cmd,long arg1,char *arg2); 68static long mem_ctrl(BIO *h,int cmd,long arg1,char *arg2);
70static int mem_new(BIO *h); 69static int mem_new(BIO *h);
71static int mem_free(BIO *data); 70static int mem_free(BIO *data);
72#else
73static int mem_write();
74static int mem_read();
75static int mem_puts();
76static int mem_gets();
77static long mem_ctrl();
78static int mem_new();
79static int mem_free();
80#endif
81
82static BIO_METHOD mem_method= 71static BIO_METHOD mem_method=
83 { 72 {
84 BIO_TYPE_MEM, 73 BIO_TYPE_MEM,
@@ -92,13 +81,15 @@ static BIO_METHOD mem_method=
92 mem_free, 81 mem_free,
93 }; 82 };
94 83
95BIO_METHOD *BIO_s_mem() 84/* bio->num is used to hold the value to return on 'empty', if it is
85 * 0, should_retry is not set */
86
87BIO_METHOD *BIO_s_mem(void)
96 { 88 {
97 return(&mem_method); 89 return(&mem_method);
98 } 90 }
99 91
100static int mem_new(bi) 92static int mem_new(BIO *bi)
101BIO *bi;
102 { 93 {
103 BUF_MEM *b; 94 BUF_MEM *b;
104 95
@@ -106,13 +97,12 @@ BIO *bi;
106 return(0); 97 return(0);
107 bi->shutdown=1; 98 bi->shutdown=1;
108 bi->init=1; 99 bi->init=1;
109 bi->num=0; 100 bi->num= -1;
110 bi->ptr=(char *)b; 101 bi->ptr=(char *)b;
111 return(1); 102 return(1);
112 } 103 }
113 104
114static int mem_free(a) 105static int mem_free(BIO *a)
115BIO *a;
116 { 106 {
117 if (a == NULL) return(0); 107 if (a == NULL) return(0);
118 if (a->shutdown) 108 if (a->shutdown)
@@ -126,10 +116,7 @@ BIO *a;
126 return(1); 116 return(1);
127 } 117 }
128 118
129static int mem_read(b,out,outl) 119static int mem_read(BIO *b, char *out, int outl)
130BIO *b;
131char *out;
132int outl;
133 { 120 {
134 int ret= -1; 121 int ret= -1;
135 BUF_MEM *bm; 122 BUF_MEM *bm;
@@ -151,16 +138,14 @@ int outl;
151 } 138 }
152 else if (bm->length == 0) 139 else if (bm->length == 0)
153 { 140 {
154 BIO_set_retry_read(b); 141 if (b->num != 0)
155 ret= -1; 142 BIO_set_retry_read(b);
143 ret= b->num;
156 } 144 }
157 return(ret); 145 return(ret);
158 } 146 }
159 147
160static int mem_write(b,in,inl) 148static int mem_write(BIO *b, char *in, int inl)
161BIO *b;
162char *in;
163int inl;
164 { 149 {
165 int ret= -1; 150 int ret= -1;
166 int blen; 151 int blen;
@@ -183,11 +168,7 @@ end:
183 return(ret); 168 return(ret);
184 } 169 }
185 170
186static long mem_ctrl(b,cmd,num,ptr) 171static long mem_ctrl(BIO *b, int cmd, long num, char *ptr)
187BIO *b;
188int cmd;
189long num;
190char *ptr;
191 { 172 {
192 long ret=1; 173 long ret=1;
193 char **pptr; 174 char **pptr;
@@ -204,6 +185,9 @@ char *ptr;
204 case BIO_CTRL_EOF: 185 case BIO_CTRL_EOF:
205 ret=(long)(bm->length == 0); 186 ret=(long)(bm->length == 0);
206 break; 187 break;
188 case BIO_C_SET_BUF_MEM_EOF_RETURN:
189 b->num=(int)num;
190 break;
207 case BIO_CTRL_INFO: 191 case BIO_CTRL_INFO:
208 ret=(long)bm->length; 192 ret=(long)bm->length;
209 if (ptr != NULL) 193 if (ptr != NULL)
@@ -250,10 +234,7 @@ char *ptr;
250 return(ret); 234 return(ret);
251 } 235 }
252 236
253static int mem_gets(bp,buf,size) 237static int mem_gets(BIO *bp, char *buf, int size)
254BIO *bp;
255char *buf;
256int size;
257 { 238 {
258 int i,j; 239 int i,j;
259 int ret= -1; 240 int ret= -1;
@@ -283,9 +264,7 @@ int size;
283 return(ret); 264 return(ret);
284 } 265 }
285 266
286static int mem_puts(bp,str) 267static int mem_puts(BIO *bp, char *str)
287BIO *bp;
288char *str;
289 { 268 {
290 int n,ret; 269 int n,ret;
291 270