diff options
Diffstat (limited to 'src/lib/libcrypto/stack/stack.c')
| -rw-r--r-- | src/lib/libcrypto/stack/stack.c | 24 |
1 files changed, 3 insertions, 21 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 * | |||
| 198 | sk_delete(_STACK *st, int loc) | 187 | sk_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); |
