summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortedu <>2014-05-17 20:15:50 +0000
committertedu <>2014-05-17 20:15:50 +0000
commit88d4a887ed59997cde7677f3860175595d598afb (patch)
treeb3fb5bd0d1c2847a20b197d6c55edb23bb7d53e3 /src
parent3ac66fc5ba6938da3d7c685d1c30063ed4857da1 (diff)
downloadopenbsd-88d4a887ed59997cde7677f3860175595d598afb.tar.gz
openbsd-88d4a887ed59997cde7677f3860175595d598afb.tar.bz2
openbsd-88d4a887ed59997cde7677f3860175595d598afb.zip
does sunos not have memmove? sorry, i guess sunos will not have libressl.
ok guenther miod
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/stack/stack.c24
-rw-r--r--src/lib/libssl/src/crypto/stack/stack.c24
2 files changed, 6 insertions, 42 deletions
diff --git a/src/lib/libcrypto/stack/stack.c b/src/lib/libcrypto/stack/stack.c
index 0224bfce74..e50967a0f1 100644
--- a/src/lib/libcrypto/stack/stack.c
+++ b/src/lib/libcrypto/stack/stack.c
@@ -163,19 +163,8 @@ sk_insert(_STACK *st, void *data, int loc)
163 if ((loc >= (int)st->num) || (loc < 0)) 163 if ((loc >= (int)st->num) || (loc < 0))
164 st->data[st->num] = data; 164 st->data[st->num] = data;
165 else { 165 else {
166 int i; 166 memmove(&(st->data[loc + 1]), &(st->data[loc]),
167 char **f, **t;
168
169 f = st->data;
170 t = &(st->data[1]);
171 for (i = st->num; i >= loc; i--)
172 t[i] = f[i];
173
174#ifdef undef /* no memmove on sunos :-( */
175 memmove(&(st->data[loc + 1]),
176 &(st->data[loc]),
177 sizeof(char *)*(st->num - loc)); 167 sizeof(char *)*(st->num - loc));
178#endif
179 st->data[loc] = data; 168 st->data[loc] = data;
180 } 169 }
181 st->num++; 170 st->num++;
@@ -198,21 +187,14 @@ void *
198sk_delete(_STACK *st, int loc) 187sk_delete(_STACK *st, int loc)
199{ 188{
200 char *ret; 189 char *ret;
201 int i, j;
202 190
203 if (!st || (loc < 0) || (loc >= st->num)) 191 if (!st || (loc < 0) || (loc >= st->num))
204 return NULL; 192 return NULL;
205 193
206 ret = st->data[loc]; 194 ret = st->data[loc];
207 if (loc != st->num - 1) { 195 if (loc != st->num - 1) {
208 j = st->num - 1; 196 memmove(&(st->data[loc]), &(st->data[loc + 1]),
209 for (i = loc; i < j; i++) 197 sizeof(char *)*(st->num - 1 - loc));
210 st->data[i] = st->data[i + 1];
211 /* In theory memcpy is not safe for this
212 * memcpy( &(st->data[loc]),
213 * &(st->data[loc+1]),
214 * sizeof(char *)*(st->num-loc-1));
215 */
216 } 198 }
217 st->num--; 199 st->num--;
218 return (ret); 200 return (ret);
diff --git a/src/lib/libssl/src/crypto/stack/stack.c b/src/lib/libssl/src/crypto/stack/stack.c
index 0224bfce74..e50967a0f1 100644
--- a/src/lib/libssl/src/crypto/stack/stack.c
+++ b/src/lib/libssl/src/crypto/stack/stack.c
@@ -163,19 +163,8 @@ sk_insert(_STACK *st, void *data, int loc)
163 if ((loc >= (int)st->num) || (loc < 0)) 163 if ((loc >= (int)st->num) || (loc < 0))
164 st->data[st->num] = data; 164 st->data[st->num] = data;
165 else { 165 else {
166 int i; 166 memmove(&(st->data[loc + 1]), &(st->data[loc]),
167 char **f, **t;
168
169 f = st->data;
170 t = &(st->data[1]);
171 for (i = st->num; i >= loc; i--)
172 t[i] = f[i];
173
174#ifdef undef /* no memmove on sunos :-( */
175 memmove(&(st->data[loc + 1]),
176 &(st->data[loc]),
177 sizeof(char *)*(st->num - loc)); 167 sizeof(char *)*(st->num - loc));
178#endif
179 st->data[loc] = data; 168 st->data[loc] = data;
180 } 169 }
181 st->num++; 170 st->num++;
@@ -198,21 +187,14 @@ void *
198sk_delete(_STACK *st, int loc) 187sk_delete(_STACK *st, int loc)
199{ 188{
200 char *ret; 189 char *ret;
201 int i, j;
202 190
203 if (!st || (loc < 0) || (loc >= st->num)) 191 if (!st || (loc < 0) || (loc >= st->num))
204 return NULL; 192 return NULL;
205 193
206 ret = st->data[loc]; 194 ret = st->data[loc];
207 if (loc != st->num - 1) { 195 if (loc != st->num - 1) {
208 j = st->num - 1; 196 memmove(&(st->data[loc]), &(st->data[loc + 1]),
209 for (i = loc; i < j; i++) 197 sizeof(char *)*(st->num - 1 - loc));
210 st->data[i] = st->data[i + 1];
211 /* In theory memcpy is not safe for this
212 * memcpy( &(st->data[loc]),
213 * &(st->data[loc+1]),
214 * sizeof(char *)*(st->num-loc-1));
215 */
216 } 198 }
217 st->num--; 199 st->num--;
218 return (ret); 200 return (ret);