diff options
| author | djm <> | 2010-10-01 22:54:21 +0000 |
|---|---|---|
| committer | djm <> | 2010-10-01 22:54:21 +0000 |
| commit | 829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2 (patch) | |
| tree | e03b9f1bd051e844b971936729e9df549a209130 /src/lib/libcrypto/buffer | |
| parent | e6b755d2a53d3cac7a344dfdd6bf7c951cac754c (diff) | |
| download | openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.gz openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.bz2 openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.zip | |
import OpenSSL-1.0.0a
Diffstat (limited to 'src/lib/libcrypto/buffer')
| -rw-r--r-- | src/lib/libcrypto/buffer/buf_err.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/buffer/buffer.c | 89 | ||||
| -rw-r--r-- | src/lib/libcrypto/buffer/buffer.h | 9 |
3 files changed, 91 insertions, 9 deletions
diff --git a/src/lib/libcrypto/buffer/buf_err.c b/src/lib/libcrypto/buffer/buf_err.c index 3e25bbe879..8f1de6192b 100644 --- a/src/lib/libcrypto/buffer/buf_err.c +++ b/src/lib/libcrypto/buffer/buf_err.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* crypto/buffer/buf_err.c */ | 1 | /* crypto/buffer/buf_err.c */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
diff --git a/src/lib/libcrypto/buffer/buffer.c b/src/lib/libcrypto/buffer/buffer.c index b3e947771d..620ea8d536 100644 --- a/src/lib/libcrypto/buffer/buffer.c +++ b/src/lib/libcrypto/buffer/buffer.c | |||
| @@ -89,10 +89,10 @@ void BUF_MEM_free(BUF_MEM *a) | |||
| 89 | OPENSSL_free(a); | 89 | OPENSSL_free(a); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | int BUF_MEM_grow(BUF_MEM *str, int len) | 92 | int BUF_MEM_grow(BUF_MEM *str, size_t len) |
| 93 | { | 93 | { |
| 94 | char *ret; | 94 | char *ret; |
| 95 | unsigned int n; | 95 | size_t n; |
| 96 | 96 | ||
| 97 | if (str->length >= len) | 97 | if (str->length >= len) |
| 98 | { | 98 | { |
| @@ -125,10 +125,10 @@ int BUF_MEM_grow(BUF_MEM *str, int len) | |||
| 125 | return(len); | 125 | return(len); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | int BUF_MEM_grow_clean(BUF_MEM *str, int len) | 128 | int BUF_MEM_grow_clean(BUF_MEM *str, size_t len) |
| 129 | { | 129 | { |
| 130 | char *ret; | 130 | char *ret; |
| 131 | unsigned int n; | 131 | size_t n; |
| 132 | 132 | ||
| 133 | if (str->length >= len) | 133 | if (str->length >= len) |
| 134 | { | 134 | { |
| @@ -161,3 +161,84 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int len) | |||
| 161 | } | 161 | } |
| 162 | return(len); | 162 | return(len); |
| 163 | } | 163 | } |
| 164 | |||
| 165 | char *BUF_strdup(const char *str) | ||
| 166 | { | ||
| 167 | if (str == NULL) return(NULL); | ||
| 168 | return BUF_strndup(str, strlen(str)); | ||
| 169 | } | ||
| 170 | |||
| 171 | char *BUF_strndup(const char *str, size_t siz) | ||
| 172 | { | ||
| 173 | char *ret; | ||
| 174 | |||
| 175 | if (str == NULL) return(NULL); | ||
| 176 | |||
| 177 | ret=OPENSSL_malloc(siz+1); | ||
| 178 | if (ret == NULL) | ||
| 179 | { | ||
| 180 | BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE); | ||
| 181 | return(NULL); | ||
| 182 | } | ||
| 183 | BUF_strlcpy(ret,str,siz+1); | ||
| 184 | return(ret); | ||
| 185 | } | ||
| 186 | |||
| 187 | void *BUF_memdup(const void *data, size_t siz) | ||
| 188 | { | ||
| 189 | void *ret; | ||
| 190 | |||
| 191 | if (data == NULL) return(NULL); | ||
| 192 | |||
| 193 | ret=OPENSSL_malloc(siz); | ||
| 194 | if (ret == NULL) | ||
| 195 | { | ||
| 196 | BUFerr(BUF_F_BUF_MEMDUP,ERR_R_MALLOC_FAILURE); | ||
| 197 | return(NULL); | ||
| 198 | } | ||
| 199 | return memcpy(ret, data, siz); | ||
| 200 | } | ||
| 201 | |||
| 202 | size_t BUF_strlcpy(char *dst, const char *src, size_t size) | ||
| 203 | { | ||
| 204 | size_t l = 0; | ||
| 205 | for(; size > 1 && *src; size--) | ||
| 206 | { | ||
| 207 | *dst++ = *src++; | ||
| 208 | l++; | ||
| 209 | } | ||
| 210 | if (size) | ||
| 211 | *dst = '\0'; | ||
| 212 | return l + strlen(src); | ||
| 213 | } | ||
| 214 | |||
| 215 | size_t BUF_strlcat(char *dst, const char *src, size_t size) | ||
| 216 | { | ||
| 217 | size_t l = 0; | ||
| 218 | for(; size > 0 && *dst; size--, dst++) | ||
| 219 | l++; | ||
| 220 | return l + BUF_strlcpy(dst, src, size); | ||
| 221 | } | ||
| 222 | |||
| 223 | void BUF_reverse(unsigned char *out, unsigned char *in, size_t size) | ||
| 224 | { | ||
| 225 | size_t i; | ||
| 226 | if (in) | ||
| 227 | { | ||
| 228 | out += size - 1; | ||
| 229 | for (i = 0; i < size; i++) | ||
| 230 | *in++ = *out--; | ||
| 231 | } | ||
| 232 | else | ||
| 233 | { | ||
| 234 | unsigned char *q; | ||
| 235 | char c; | ||
| 236 | q = out + size - 1; | ||
| 237 | for (i = 0; i < size/2; i++) | ||
| 238 | { | ||
| 239 | c = *q; | ||
| 240 | *q-- = *out; | ||
| 241 | *out++ = c; | ||
| 242 | } | ||
| 243 | } | ||
| 244 | } | ||
diff --git a/src/lib/libcrypto/buffer/buffer.h b/src/lib/libcrypto/buffer/buffer.h index 1db9607450..178e418282 100644 --- a/src/lib/libcrypto/buffer/buffer.h +++ b/src/lib/libcrypto/buffer/buffer.h | |||
| @@ -76,18 +76,19 @@ extern "C" { | |||
| 76 | 76 | ||
| 77 | struct buf_mem_st | 77 | struct buf_mem_st |
| 78 | { | 78 | { |
| 79 | int length; /* current number of bytes */ | 79 | size_t length; /* current number of bytes */ |
| 80 | char *data; | 80 | char *data; |
| 81 | int max; /* size of buffer */ | 81 | size_t max; /* size of buffer */ |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| 84 | BUF_MEM *BUF_MEM_new(void); | 84 | BUF_MEM *BUF_MEM_new(void); |
| 85 | void BUF_MEM_free(BUF_MEM *a); | 85 | void BUF_MEM_free(BUF_MEM *a); |
| 86 | int BUF_MEM_grow(BUF_MEM *str, int len); | 86 | int BUF_MEM_grow(BUF_MEM *str, size_t len); |
| 87 | int BUF_MEM_grow_clean(BUF_MEM *str, int len); | 87 | int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); |
| 88 | char * BUF_strdup(const char *str); | 88 | char * BUF_strdup(const char *str); |
| 89 | char * BUF_strndup(const char *str, size_t siz); | 89 | char * BUF_strndup(const char *str, size_t siz); |
| 90 | void * BUF_memdup(const void *data, size_t siz); | 90 | void * BUF_memdup(const void *data, size_t siz); |
| 91 | void BUF_reverse(unsigned char *out, unsigned char *in, size_t siz); | ||
| 91 | 92 | ||
| 92 | /* safe string functions */ | 93 | /* safe string functions */ |
| 93 | size_t BUF_strlcpy(char *dst,const char *src,size_t siz); | 94 | size_t BUF_strlcpy(char *dst,const char *src,size_t siz); |
