003 File Manager
Current Path:
/usr/src/crypto/openssl/crypto
usr
/
src
/
crypto
/
openssl
/
crypto
/
📁
..
📄
LPdir_unix.c
(4.88 KB)
📁
aes
📁
aria
📄
arm64cpuid.pl
(2.81 KB)
📄
arm_arch.h
(2.57 KB)
📄
armcap.c
(5.87 KB)
📄
armv4cpuid.pl
(5.33 KB)
📁
asn1
📁
async
📁
bf
📁
bio
📁
blake2
📁
bn
📁
buffer
📄
build.info
(1.56 KB)
📄
c64xpluscpuid.pl
(5.3 KB)
📁
camellia
📁
cast
📁
chacha
📁
cmac
📁
cms
📁
comp
📁
conf
📄
cpt_err.c
(3.04 KB)
📄
cryptlib.c
(12.86 KB)
📁
ct
📄
ctype.c
(14.39 KB)
📄
cversion.c
(1.03 KB)
📁
des
📁
dh
📄
dllmain.c
(1.17 KB)
📁
dsa
📁
dso
📄
ebcdic.c
(14.97 KB)
📁
ec
📁
engine
📁
err
📁
evp
📄
ex_data.c
(11.14 KB)
📄
getenv.c
(728 B)
📁
hmac
📄
ia64cpuid.S
(6.34 KB)
📁
idea
📄
init.c
(24.44 KB)
📁
kdf
📁
lhash
📁
md2
📁
md4
📁
md5
📁
mdc2
📄
mem.c
(7.85 KB)
📄
mem_clr.c
(770 B)
📄
mem_dbg.c
(17.65 KB)
📄
mem_sec.c
(17.01 KB)
📄
mips_arch.h
(1.21 KB)
📁
modes
📄
o_dir.c
(1.05 KB)
📄
o_fips.c
(621 B)
📄
o_fopen.c
(4.26 KB)
📄
o_init.c
(513 B)
📄
o_str.c
(6.36 KB)
📄
o_time.c
(5.52 KB)
📁
objects
📁
ocsp
📄
pariscid.pl
(4.57 KB)
📁
pem
📁
perlasm
📁
pkcs12
📁
pkcs7
📁
poly1305
📄
ppc_arch.h
(827 B)
📄
ppccap.c
(12.87 KB)
📄
ppccpuid.pl
(7.01 KB)
📁
rand
📁
rc2
📁
rc4
📁
rc5
📁
ripemd
📁
rsa
📄
s390x_arch.h
(3.07 KB)
📄
s390xcap.c
(1.97 KB)
📄
s390xcpuid.pl
(8.54 KB)
📁
seed
📁
sha
📁
siphash
📁
sm2
📁
sm3
📁
sm4
📄
sparc_arch.h
(4.24 KB)
📄
sparccpuid.S
(12 KB)
📄
sparcv9cap.c
(10.49 KB)
📁
srp
📁
stack
📁
store
📄
threads_none.c
(2.86 KB)
📄
threads_pthread.c
(4.15 KB)
📁
ts
📁
txt_db
📁
ui
📄
uid.c
(1.09 KB)
📄
vms_rms.h
(2.1 KB)
📁
whrlpool
📁
x509
📁
x509v3
📄
x86_64cpuid.pl
(10.14 KB)
📄
x86cpuid.pl
(12.2 KB)
Editing: o_str.c
/* * Copyright 2003-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ #include "e_os.h" #include <limits.h> #include <openssl/crypto.h> #include "internal/cryptlib.h" #include "internal/o_str.h" int OPENSSL_memcmp(const void *v1, const void *v2, size_t n) { const unsigned char *c1 = v1, *c2 = v2; int ret = 0; while (n && (ret = *c1 - *c2) == 0) n--, c1++, c2++; return ret; } char *CRYPTO_strdup(const char *str, const char* file, int line) { char *ret; if (str == NULL) return NULL; ret = CRYPTO_malloc(strlen(str) + 1, file, line); if (ret != NULL) strcpy(ret, str); return ret; } char *CRYPTO_strndup(const char *str, size_t s, const char* file, int line) { size_t maxlen; char *ret; if (str == NULL) return NULL; maxlen = OPENSSL_strnlen(str, s); ret = CRYPTO_malloc(maxlen + 1, file, line); if (ret) { memcpy(ret, str, maxlen); ret[maxlen] = '\0'; } return ret; } void *CRYPTO_memdup(const void *data, size_t siz, const char* file, int line) { void *ret; if (data == NULL || siz >= INT_MAX) return NULL; ret = CRYPTO_malloc(siz, file, line); if (ret == NULL) { CRYPTOerr(CRYPTO_F_CRYPTO_MEMDUP, ERR_R_MALLOC_FAILURE); return NULL; } return memcpy(ret, data, siz); } size_t OPENSSL_strnlen(const char *str, size_t maxlen) { const char *p; for (p = str; maxlen-- != 0 && *p != '\0'; ++p) ; return p - str; } size_t OPENSSL_strlcpy(char *dst, const char *src, size_t size) { size_t l = 0; for (; size > 1 && *src; size--) { *dst++ = *src++; l++; } if (size) *dst = '\0'; return l + strlen(src); } size_t OPENSSL_strlcat(char *dst, const char *src, size_t size) { size_t l = 0; for (; size > 0 && *dst; size--, dst++) l++; return l + OPENSSL_strlcpy(dst, src, size); } int OPENSSL_hexchar2int(unsigned char c) { #ifdef CHARSET_EBCDIC c = os_toebcdic[c]; #endif switch (c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case 'a': case 'A': return 0x0A; case 'b': case 'B': return 0x0B; case 'c': case 'C': return 0x0C; case 'd': case 'D': return 0x0D; case 'e': case 'E': return 0x0E; case 'f': case 'F': return 0x0F; } return -1; } /* * Give a string of hex digits convert to a buffer */ unsigned char *OPENSSL_hexstr2buf(const char *str, long *len) { unsigned char *hexbuf, *q; unsigned char ch, cl; int chi, cli; const unsigned char *p; size_t s; s = strlen(str); if ((hexbuf = OPENSSL_malloc(s >> 1)) == NULL) { CRYPTOerr(CRYPTO_F_OPENSSL_HEXSTR2BUF, ERR_R_MALLOC_FAILURE); return NULL; } for (p = (const unsigned char *)str, q = hexbuf; *p; ) { ch = *p++; if (ch == ':') continue; cl = *p++; if (!cl) { CRYPTOerr(CRYPTO_F_OPENSSL_HEXSTR2BUF, CRYPTO_R_ODD_NUMBER_OF_DIGITS); OPENSSL_free(hexbuf); return NULL; } cli = OPENSSL_hexchar2int(cl); chi = OPENSSL_hexchar2int(ch); if (cli < 0 || chi < 0) { OPENSSL_free(hexbuf); CRYPTOerr(CRYPTO_F_OPENSSL_HEXSTR2BUF, CRYPTO_R_ILLEGAL_HEX_DIGIT); return NULL; } *q++ = (unsigned char)((chi << 4) | cli); } if (len) *len = q - hexbuf; return hexbuf; } /* * Given a buffer of length 'len' return a OPENSSL_malloc'ed string with its * hex representation @@@ (Contents of buffer are always kept in ASCII, also * on EBCDIC machines) */ char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len) { static const char hexdig[] = "0123456789ABCDEF"; char *tmp, *q; const unsigned char *p; int i; if (len == 0) { return OPENSSL_zalloc(1); } if ((tmp = OPENSSL_malloc(len * 3)) == NULL) { CRYPTOerr(CRYPTO_F_OPENSSL_BUF2HEXSTR, ERR_R_MALLOC_FAILURE); return NULL; } q = tmp; for (i = 0, p = buffer; i < len; i++, p++) { *q++ = hexdig[(*p >> 4) & 0xf]; *q++ = hexdig[*p & 0xf]; *q++ = ':'; } q[-1] = 0; #ifdef CHARSET_EBCDIC ebcdic2ascii(tmp, tmp, q - tmp - 1); #endif return tmp; } int openssl_strerror_r(int errnum, char *buf, size_t buflen) { #if defined(_MSC_VER) && _MSC_VER>=1400 && !defined(_WIN32_WCE) return !strerror_s(buf, buflen, errnum); #elif defined(_GNU_SOURCE) char *err; /* * GNU strerror_r may not actually set buf. * It can return a pointer to some (immutable) static string in which case * buf is left unused. */ err = strerror_r(errnum, buf, buflen); if (err == NULL || buflen == 0) return 0; /* * If err is statically allocated, err != buf and we need to copy the data. * If err points somewhere inside buf, OPENSSL_strlcpy can handle this, * since src and dest are not annotated with __restrict and the function * reads src byte for byte and writes to dest. * If err == buf we do not have to copy anything. */ if (err != buf) OPENSSL_strlcpy(buf, err, buflen); return 1; #elif (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) || \ (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) /* * We can use "real" strerror_r. The OpenSSL version differs in that it * gives 1 on success and 0 on failure for consistency with other OpenSSL * functions. Real strerror_r does it the other way around */ return !strerror_r(errnum, buf, buflen); #else char *err; /* Fall back to non-thread safe strerror()...its all we can do */ if (buflen < 2) return 0; err = strerror(errnum); /* Can this ever happen? */ if (err == NULL) return 0; OPENSSL_strlcpy(buf, err, buflen); return 1; #endif }
Upload File
Create Folder