本文整理汇总了C++中brealloc函数的典型用法代码示例。如果您正苦于以下问题:C++ brealloc函数的具体用法?C++ brealloc怎么用?C++ brealloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了brealloc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ss_check_hash
int ss_check_hash(buffer_t *buf, chunk_t *chunk, enc_ctx_t *ctx)
{
int i, j, k;
ssize_t blen = buf->len;
uint32_t cidx = chunk->idx;
brealloc(chunk->buf, chunk->len + blen, buf->capacity);
brealloc(buf, chunk->len + blen, buf->capacity);
for (i = 0, j = 0, k = 0; i < blen; i++) {
chunk->buf->array[cidx++] = buf->array[k++];
if (cidx == CLEN_BYTES) {
uint16_t clen = ntohs(*((uint16_t *)chunk->buf->array));
brealloc(chunk->buf, clen + AUTH_BYTES, buf->capacity);
chunk->len = clen;
}
if (cidx == chunk->len + AUTH_BYTES) {
// Compare hash
uint8_t hash[ONETIMEAUTH_BYTES * 2];
uint8_t key[MAX_IV_LENGTH + sizeof(uint32_t)];
uint32_t c = htonl(chunk->counter);
memcpy(key, ctx->evp.iv, enc_iv_len);
memcpy(key + enc_iv_len, &c, sizeof(uint32_t));
#if defined(USE_CRYPTO_OPENSSL)
HMAC(EVP_sha1(), key, enc_iv_len + sizeof(uint32_t),
(uint8_t *)chunk->buf->array + AUTH_BYTES, chunk->len, hash, NULL);
#elif defined(USE_CRYPTO_MBEDTLS)
mbedtls_md_hmac(mbedtls_md_info_from_type(MBEDTLS_MD_SHA1), key, enc_iv_len + sizeof(uint32_t),
(uint8_t *)chunk->buf->array + AUTH_BYTES, chunk->len, hash);
#else
sha1_hmac(key, enc_iv_len + sizeof(uint32_t),
(uint8_t *)chunk->buf->array + AUTH_BYTES, chunk->len, hash);
#endif
if (safe_memcmp(hash, chunk->buf->array + CLEN_BYTES, ONETIMEAUTH_BYTES) != 0) {
return 0;
}
// Copy chunk back to buffer
memmove(buf->array + j + chunk->len, buf->array + k, blen - i - 1);
memcpy(buf->array + j, chunk->buf->array + AUTH_BYTES, chunk->len);
// Reset the base offset
j += chunk->len;
k = j;
cidx = 0;
chunk->counter++;
}
}
buf->len = j;
chunk->idx = cidx;
return 1;
}
开发者ID:MYJN,项目名称:shadowsocks-libev,代码行数:57,代码来源:encrypt.c
示例2: grow_del_list
static bool grow_del_list(struct del_ctx *del)
{
if (del->num_ids == MAX_DEL_LIST_LEN) {
return false;
}
if (del->num_ids == del->max_ids) {
del->max_ids = (del->max_ids * 3) / 2;
del->JobId = (JobId_t *)brealloc(del->JobId, sizeof(JobId_t) *
del->max_ids);
del->PurgedFiles = (char *)brealloc(del->PurgedFiles, del->max_ids);
}
return true;
}
开发者ID:eneuhauss,项目名称:bareos,代码行数:14,代码来源:ua_prune.c
示例3: aead_decrypt_all
int
aead_decrypt_all(buffer_t *ciphertext, cipher_t *cipher, size_t capacity)
{
size_t salt_len = cipher->key_len;
size_t tag_len = cipher->tag_len;
int err = CRYPTO_OK;
if (ciphertext->len <= salt_len + tag_len) {
return CRYPTO_ERROR;
}
cipher_ctx_t cipher_ctx;
aead_ctx_init(cipher, &cipher_ctx, 0);
static buffer_t tmp = { 0, 0, 0, NULL };
brealloc(&tmp, ciphertext->len, capacity);
buffer_t *plaintext = &tmp;
plaintext->len = ciphertext->len - salt_len - tag_len;
/* get salt */
uint8_t *salt = cipher_ctx.salt;
memcpy(salt, ciphertext->data, salt_len);
if (ppbloom_check((void *)salt, salt_len) == 1) {
LOGE("crypto: AEAD: repeat salt detected");
return CRYPTO_ERROR;
}
aead_cipher_ctx_set_key(&cipher_ctx, 0);
size_t plen = plaintext->len;
err = aead_cipher_decrypt(&cipher_ctx,
(uint8_t *)plaintext->data, &plen,
(uint8_t *)ciphertext->data + salt_len,
ciphertext->len - salt_len, NULL, 0,
cipher_ctx.nonce, cipher_ctx.skey);
aead_ctx_release(&cipher_ctx);
if (err)
return CRYPTO_ERROR;
ppbloom_add((void *)salt, salt_len);
brealloc(ciphertext, plaintext->len, capacity);
memcpy(ciphertext->data, plaintext->data, plaintext->len);
ciphertext->len = plaintext->len;
return CRYPTO_OK;
}
开发者ID:amphineko,项目名称:shadowsocks-libev,代码行数:50,代码来源:aead.c
示例4: aead_encrypt
/* TCP */
int
aead_encrypt(buffer_t *plaintext, cipher_ctx_t *cipher_ctx, size_t capacity)
{
if (cipher_ctx == NULL)
return CRYPTO_ERROR;
if (plaintext->len == 0) {
return CRYPTO_OK;
}
static buffer_t tmp = { 0, 0, 0, NULL };
buffer_t *ciphertext;
cipher_t *cipher = cipher_ctx->cipher;
int err = CRYPTO_ERROR;
size_t salt_ofst = 0;
size_t salt_len = cipher->key_len;
size_t tag_len = cipher->tag_len;
if (!cipher_ctx->init) {
salt_ofst = salt_len;
}
size_t out_len = salt_ofst + 2 * tag_len + plaintext->len + CHUNK_SIZE_LEN;
brealloc(&tmp, out_len, capacity);
ciphertext = &tmp;
ciphertext->len = out_len;
if (!cipher_ctx->init) {
memcpy(ciphertext->data, cipher_ctx->salt, salt_len);
aead_cipher_ctx_set_key(cipher_ctx, 1);
cipher_ctx->init = 1;
ppbloom_add((void *)cipher_ctx->salt, salt_len);
}
err = aead_chunk_encrypt(cipher_ctx,
(uint8_t *)plaintext->data,
(uint8_t *)ciphertext->data + salt_ofst,
cipher_ctx->nonce, plaintext->len);
if (err)
return err;
brealloc(plaintext, ciphertext->len, capacity);
memcpy(plaintext->data, ciphertext->data, ciphertext->len);
plaintext->len = ciphertext->len;
return 0;
}
开发者ID:amphineko,项目名称:shadowsocks-libev,代码行数:50,代码来源:aead.c
示例5: cd_ensure_capacity
static inline bool cd_ensure_capacity(calldata_t *data, uint8_t **pos,
size_t new_size)
{
size_t offset;
size_t new_capacity;
if (new_size < data->capacity)
return true;
if (data->fixed) {
blog(LOG_ERROR, "Tried to go above fixed calldata stack size!");
return false;
}
offset = *pos - data->stack;
new_capacity = data->capacity * 2;
if (new_capacity < new_size)
new_capacity = new_size;
data->stack = brealloc(data->stack, new_capacity);
data->capacity = new_capacity;
*pos = data->stack + offset;
return true;
}
开发者ID:AhmedAbdulSalam5,项目名称:obs-studio,代码行数:25,代码来源:calldata.c
示例6: ss_onetimeauth
int
ss_onetimeauth(buffer_t *buf, uint8_t *iv, size_t capacity)
{
uint8_t hash[ONETIMEAUTH_BYTES * 2];
uint8_t auth_key[MAX_IV_LENGTH + MAX_KEY_LENGTH];
memcpy(auth_key, iv, enc_iv_len);
memcpy(auth_key + enc_iv_len, enc_key, enc_key_len);
brealloc(buf, ONETIMEAUTH_BYTES + buf->len, capacity);
#if defined(USE_CRYPTO_OPENSSL)
HMAC(EVP_sha1(), auth_key, enc_iv_len + enc_key_len, (uint8_t *)buf->array, buf->len, (uint8_t *)hash, NULL);
#elif defined(USE_CRYPTO_MBEDTLS)
mbedtls_md_hmac(mbedtls_md_info_from_type(
MBEDTLS_MD_SHA1), auth_key, enc_iv_len + enc_key_len, (uint8_t *)buf->array, buf->len,
(uint8_t *)hash);
#else
sha1_hmac(auth_key, enc_iv_len + enc_key_len, (uint8_t *)buf->array, buf->len, (uint8_t *)hash);
#endif
memcpy(buf->array + buf->len, hash, ONETIMEAUTH_BYTES);
buf->len += ONETIMEAUTH_BYTES;
return 0;
}
开发者ID:Frenda,项目名称:shadowsocks-libev,代码行数:25,代码来源:encrypt.c
示例7: buffroom
/* external function definitions */
void
buffroom(struct buff * p, int add)
{
int def; /* space deficiency */
if ((p != (struct buff *) (0))
&& ((def = add - (p->max - p->put)) > 0)) {
int len = p->put - p->get;
int off = p->get - p->min;
if (def > off) {
/* deficiency is more than the offset */
int siz = p->max - p->min;
int req = siz + def;
siz += siz / 2;
if (siz < req)
siz = req;
if (siz < sizeof(*p))
siz = sizeof(*p);
p->min = (char *) brealloc(p->min, siz);
p->get = p->min + off;
p->put = p->get + len;
p->max = p->min + siz;
} else {
bcopy(p->get, p->min, len);
p->get -= off;
p->put -= off;
}
}
return;
}
开发者ID:PlanetAPL,项目名称:a-plus,代码行数:33,代码来源:buffroom.c
示例8: bmalloc
char *read_line(HANDLE hin)
{
char *buf;
int bufsize = 32, strind = 0;
DWORD bytes_read;
buf = bmalloc(bufsize);
while (1) {
if (!ReadFile(hin, &buf[strind], 1, &bytes_read, NULL)) {
printf("Read error\n");
break;
}
if (bytes_read == 0) {
buf[strind] = '\0';
break;
} else if (buf[strind] == '\r')
continue;
else if (buf[strind] == '\n') {
buf[strind++] = '\0';
break;
} else {
strind++;
if (strind >= bufsize) {
bufsize *= 2;
buf = brealloc(buf, bufsize);
}
}
}
if (strind == 0) {
bfree(buf);
return NULL;
} else
return buf;
}
开发者ID:dror-g,项目名称:nn-colletion,代码行数:35,代码来源:makeinstall.c
示例9: inputGetc
static int inputGetc(ej_t* ep)
{
ejinput_t *ip;
int c, len;
a_assert(ep);
ip = ep->input;
if ((len = ringqLen(&ip->script)) == 0) {
return -1;
}
c = ringqGetc(&ip->script);
if (c == '\n') {
ip->lineNumber++;
ip->lineColumn = 0;
} else {
if ((ip->lineColumn + 2) >= ip->lineLength) {
ip->lineLength += EJ_INC;
ip->line = brealloc(B_L, ip->line, ip->lineLength * sizeof(char_t));
}
ip->line[ip->lineColumn++] = c;
ip->line[ip->lineColumn] = '\0';
}
return c;
}
开发者ID:vonnyfly,项目名称:http_server_for_wince,代码行数:27,代码来源:ejlex.c
示例10: ss_gen_hash
int ss_gen_hash(buffer_t *buf, uint32_t *counter, enc_ctx_t *ctx, size_t capacity)
{
ssize_t blen = buf->len;
uint16_t chunk_len = htons((uint16_t)blen);
uint8_t hash[ONETIMEAUTH_BYTES * 2];
uint8_t key[MAX_IV_LENGTH + sizeof(uint32_t)];
uint32_t c = htonl(*counter);
brealloc(buf, AUTH_BYTES + blen, capacity);
memcpy(key, ctx->evp.iv, enc_iv_len);
memcpy(key + enc_iv_len, &c, sizeof(uint32_t));
#if defined(USE_CRYPTO_OPENSSL)
HMAC(EVP_sha1(), key, enc_iv_len + sizeof(uint32_t), (uint8_t *)buf->array, blen, hash, NULL);
#elif defined(USE_CRYPTO_MBEDTLS)
mbedtls_md_hmac(mbedtls_md_info_from_type(
MBEDTLS_MD_SHA1), key, enc_iv_len + sizeof(uint32_t), (uint8_t *)buf->array, blen, hash);
#else
sha1_hmac(key, enc_iv_len + sizeof(uint32_t), (uint8_t *)buf->array, blen, hash);
#endif
memmove(buf->array + AUTH_BYTES, buf->array, blen);
memcpy(buf->array + CLEN_BYTES, hash, ONETIMEAUTH_BYTES);
memcpy(buf->array, &chunk_len, CLEN_BYTES);
*counter = *counter + 1;
buf->len = blen + AUTH_BYTES;
return 0;
}
开发者ID:3gao,项目名称:shadowsocks-libev,代码行数:29,代码来源:encrypt.c
示例11: stream_encrypt_all
int
stream_encrypt_all(buffer_t *plaintext, cipher_t *cipher, size_t capacity)
{
cipher_ctx_t cipher_ctx;
stream_ctx_init(cipher, &cipher_ctx, 1);
size_t nonce_len = cipher->nonce_len;
int err = CRYPTO_OK;
static buffer_t tmp = { 0, 0, 0, NULL };
brealloc(&tmp, nonce_len + plaintext->len, capacity);
buffer_t *ciphertext = &tmp;
ciphertext->len = plaintext->len;
uint8_t *nonce = cipher_ctx.nonce;
cipher_ctx_set_nonce(&cipher_ctx, nonce, nonce_len, 1);
memcpy(ciphertext->data, nonce, nonce_len);
if (cipher->method >= SALSA20) {
crypto_stream_xor_ic((uint8_t *)(ciphertext->data + nonce_len),
(const uint8_t *)plaintext->data, (uint64_t)(plaintext->len),
(const uint8_t *)nonce,
0, cipher->key, cipher->method);
} else {
err = cipher_ctx_update(&cipher_ctx, (uint8_t *)(ciphertext->data + nonce_len),
&ciphertext->len, (const uint8_t *)plaintext->data,
plaintext->len);
}
stream_ctx_release(&cipher_ctx);
if (err)
return CRYPTO_ERROR;
#ifdef SS_DEBUG
dump("PLAIN", plaintext->data, plaintext->len);
dump("CIPHER", ciphertext->data + nonce_len, ciphertext->len);
dump("NONCE", ciphertext->data, nonce_len);
#endif
brealloc(plaintext, nonce_len + ciphertext->len, capacity);
memcpy(plaintext->data, ciphertext->data, nonce_len + ciphertext->len);
plaintext->len = nonce_len + ciphertext->len;
return CRYPTO_OK;
}
开发者ID:Wang-P,项目名称:shadowsocks-libev,代码行数:46,代码来源:stream.c
示例12: acpt
/* internal function definitions */
static void
acpt(struct lstn * p)
{
static char fnc[] = "acpt";
int r_namelen = p->r_namelen;
struct sockaddr *r_name;
int fd;
int l_namelen = p->l_namelen;
struct sockaddr *l_name;
r_name = (struct sockaddr *) balloc(r_namelen);
if ((fd = accept(p->fd, r_name, &r_namelen)) < 0) {
if ((errno == EWOULDBLOCK)
|| (errno == EINTR)) {
/* nothing to report */
} else if ((errno == EMFILE)
|| (errno == ENFILE)
|| (errno == ENXIO)
|| (errno == EIO)) {
Warn("%t %s(%s): warn: accept(%d): %m\n",
fnc, p->name, p->fd);
} else {
Warn("%t %s(%s): error: accept(%d): %m\n",
fnc, p->name, p->fd);
lstnclose(p);
}
bfree((char *) r_name);
return;
}
l_name = (struct sockaddr *) balloc(l_namelen);
if (getsockname(fd, l_name, &l_namelen) < 0) {
Warn("%t %s(%s): error: getsockname(%d): %m\n",
fnc, p->name, fd);
doclose(fd);
bfree((char *) l_name);
bfree((char *) r_name);
return;
}
p->acpttod = todsec();
(p->acptcount)++;
r_name = (struct sockaddr *) brealloc((char *) r_name, r_namelen);
l_name = (struct sockaddr *) brealloc((char *) l_name, l_namelen);
(*(p->acptfunc)) (p, fd, r_name, r_namelen, l_name, l_namelen);
return;
}
开发者ID:dbremner,项目名称:aplusdev,代码行数:47,代码来源:lstnopen.c
示例13: job_delete_handler
/*
* Called here to make in memory list of JobIds to be
* deleted and the associated PurgedFiles flag.
* The in memory list will then be transversed
* to issue the SQL DELETE commands. Note, the list
* is allowed to get to MAX_DEL_LIST_LEN to limit the
* maximum malloc'ed memory.
*/
int job_delete_handler(void *ctx, int num_fields, char **row)
{
struct del_ctx *del = (struct del_ctx *)ctx;
if (del->num_ids == MAX_DEL_LIST_LEN) {
return 1;
}
if (del->num_ids == del->max_ids) {
del->max_ids = (del->max_ids * 3) / 2;
del->JobId = (JobId_t *)brealloc(del->JobId, sizeof(JobId_t) * del->max_ids);
del->PurgedFiles = (char *)brealloc(del->PurgedFiles, del->max_ids);
}
del->JobId[del->num_ids] = (JobId_t)str_to_int64(row[0]);
// Dmsg2(60, "row=%d val=%d\n", del->num_ids, del->JobId[del->num_ids]);
del->PurgedFiles[del->num_ids++] = (char)str_to_int64(row[1]);
return 0;
}
开发者ID:halgandd,项目名称:bacula,代码行数:25,代码来源:ua_prune.c
示例14: bprepend
int
bprepend(buffer_t *dst, buffer_t *src, size_t capacity)
{
brealloc(dst, dst->len + src->len, capacity);
memmove(dst->data + src->len, dst->data, dst->len);
memcpy(dst->data, src->data, src->len);
dst->len = dst->len + src->len;
return dst->len;
}
开发者ID:Wang-P,项目名称:shadowsocks-libev,代码行数:9,代码来源:crypto.c
示例15: bstr_expandby
void bstr_expandby(bstr *str, unsigned extralength)
{
if (str->bufsiz >= str->length + 1 + extralength)
return;
while (str->bufsiz < str->length + 1 + extralength)
str->bufsiz *= 2;
str->text = brealloc(str->text, str->bufsiz);
}
开发者ID:dror-g,项目名称:nn-colletion,代码行数:9,代码来源:util.c
示例16: array_grow
static __inline void
array_grow(struct array *array, size_t newsize)
{
size_t i;
array->data = brealloc(array->data, newsize * sizeof(*array->data));
for (i = array->size; i < newsize; i++)
array->data[i].array = NULL;
array->size = newsize;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:10,代码来源:stack.c
示例17: main
int main()
{
binit();
char* a = bmalloc(20);
printf("%d\n", (int)a);
a = brealloc(a, 40);
printf("%d\n", (int)a);
bfree(a);
blame();
return 0;
}
开发者ID:noamsml,项目名称:kanka,代码行数:11,代码来源:blametest.c
示例18: aead_encrypt_all
int
aead_encrypt_all(buffer_t *plaintext, cipher_t *cipher, size_t capacity)
{
cipher_ctx_t cipher_ctx;
aead_ctx_init(cipher, &cipher_ctx, 1);
size_t salt_len = cipher->key_len;
size_t tag_len = cipher->tag_len;
int err = CRYPTO_OK;
static buffer_t tmp = { 0, 0, 0, NULL };
brealloc(&tmp, salt_len + tag_len + plaintext->len, capacity);
buffer_t *ciphertext = &tmp;
ciphertext->len = tag_len + plaintext->len;
/* copy salt to first pos */
memcpy(ciphertext->data, cipher_ctx.salt, salt_len);
ppbloom_add((void *)cipher_ctx.salt, salt_len);
aead_cipher_ctx_set_key(&cipher_ctx, 1);
size_t clen = ciphertext->len;
err = aead_cipher_encrypt(&cipher_ctx,
(uint8_t *)ciphertext->data + salt_len, &clen,
(uint8_t *)plaintext->data, plaintext->len,
NULL, 0, cipher_ctx.nonce, cipher_ctx.skey);
aead_ctx_release(&cipher_ctx);
if (err)
return CRYPTO_ERROR;
assert(ciphertext->len == clen);
brealloc(plaintext, salt_len + ciphertext->len, capacity);
memcpy(plaintext->data, ciphertext->data, salt_len + ciphertext->len);
plaintext->len = salt_len + ciphertext->len;
return CRYPTO_OK;
}
开发者ID:amphineko,项目名称:shadowsocks-libev,代码行数:41,代码来源:aead.c
示例19: copy_data
static inline void copy_data(struct ffmpeg_decode *decode, uint8_t *data,
size_t size)
{
size_t new_size = size + FF_INPUT_BUFFER_PADDING_SIZE;
if (decode->packet_size < new_size) {
decode->packet_buffer = brealloc(decode->packet_buffer,
new_size);
}
memset(decode->packet_buffer + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
memcpy(decode->packet_buffer, data, size);
}
开发者ID:AhmedAbdulSalam5,项目名称:obs-studio,代码行数:13,代码来源:ffmpeg-decode.c
示例20: stack_grow
static void
stack_grow(struct stack *stack)
{
int new_size, i;
if (++stack->sp == stack->size) {
new_size = stack->size * 2 + 1;
stack->stack = brealloc(stack->stack,
new_size * sizeof(*stack->stack));
for (i = stack->size; i < new_size; i++)
stack->stack[i].array = NULL;
stack->size = new_size;
}
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:14,代码来源:stack.c
注:本文中的brealloc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论