source: EcnlProtoTool/trunk/openssl-1.1.0e/crypto/objects/obj_lib.c@ 331

Last change on this file since 331 was 331, checked in by coas-nagasima, 6 years ago

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc
File size: 1.7 KB
Line 
1/*
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10#include <stdio.h>
11#include "internal/cryptlib.h"
12#include <openssl/lhash.h>
13#include <openssl/objects.h>
14#include <openssl/buffer.h>
15#include "internal/asn1_int.h"
16
17ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
18{
19 ASN1_OBJECT *r;
20
21 if (o == NULL)
22 return NULL;
23 /* If object isn't dynamic it's an internal OID which is never freed */
24 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
25 return ((ASN1_OBJECT *)o);
26
27 r = ASN1_OBJECT_new();
28 if (r == NULL) {
29 OBJerr(OBJ_F_OBJ_DUP, ERR_R_ASN1_LIB);
30 return (NULL);
31 }
32
33 /* Set dynamic flags so everything gets freed up on error */
34
35 r->flags = o->flags | (ASN1_OBJECT_FLAG_DYNAMIC |
36 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
37 ASN1_OBJECT_FLAG_DYNAMIC_DATA);
38
39 if (o->length > 0 && (r->data = OPENSSL_memdup(o->data, o->length)) == NULL)
40 goto err;
41
42 r->length = o->length;
43 r->nid = o->nid;
44
45 if (o->ln != NULL && (r->ln = OPENSSL_strdup(o->ln)) == NULL)
46 goto err;
47
48 if (o->sn != NULL && (r->sn = OPENSSL_strdup(o->sn)) == NULL)
49 goto err;
50
51 return r;
52 err:
53 ASN1_OBJECT_free(r);
54 OBJerr(OBJ_F_OBJ_DUP, ERR_R_MALLOC_FAILURE);
55 return NULL;
56}
57
58int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b)
59{
60 int ret;
61
62 ret = (a->length - b->length);
63 if (ret)
64 return (ret);
65 return (memcmp(a->data, b->data, a->length));
66}
Note: See TracBrowser for help on using the repository browser.