diff options
| author | tedu <> | 2014-04-18 01:59:00 +0000 |
|---|---|---|
| committer | tedu <> | 2014-04-18 01:59:00 +0000 |
| commit | 7e187c94c34271d4b5fc5cb79fc0e129d0a63fa1 (patch) | |
| tree | 88ee4831e2437f9075e786ffb662bb05fe0e3df6 /src/lib/libcrypto/x509/x509_obj.c | |
| parent | 80823cb97c2306eeedfd3544fc82a8d9a02224b6 (diff) | |
| download | openbsd-7e187c94c34271d4b5fc5cb79fc0e129d0a63fa1.tar.gz openbsd-7e187c94c34271d4b5fc5cb79fc0e129d0a63fa1.tar.bz2 openbsd-7e187c94c34271d4b5fc5cb79fc0e129d0a63fa1.zip | |
blunt force knf
Diffstat (limited to 'src/lib/libcrypto/x509/x509_obj.c')
| -rw-r--r-- | src/lib/libcrypto/x509/x509_obj.c | 76 |
1 files changed, 29 insertions, 47 deletions
diff --git a/src/lib/libcrypto/x509/x509_obj.c b/src/lib/libcrypto/x509/x509_obj.c index 5f38315f22..d0c02f833e 100644 --- a/src/lib/libcrypto/x509/x509_obj.c +++ b/src/lib/libcrypto/x509/x509_obj.c | |||
| @@ -64,7 +64,7 @@ | |||
| 64 | #include <openssl/buffer.h> | 64 | #include <openssl/buffer.h> |
| 65 | 65 | ||
| 66 | char *X509_NAME_oneline(X509_NAME *a, char *buf, int len) | 66 | char *X509_NAME_oneline(X509_NAME *a, char *buf, int len) |
| 67 | { | 67 | { |
| 68 | X509_NAME_ENTRY *ne; | 68 | X509_NAME_ENTRY *ne; |
| 69 | int i; | 69 | int i; |
| 70 | int n,lold,l,l1,l2,num,j,type; | 70 | int n,lold,l,l1,l2,num,j,type; |
| @@ -76,103 +76,85 @@ int i; | |||
| 76 | int gs_doit[4]; | 76 | int gs_doit[4]; |
| 77 | char tmp_buf[80]; | 77 | char tmp_buf[80]; |
| 78 | 78 | ||
| 79 | if (buf == NULL) | 79 | if (buf == NULL) { |
| 80 | { | ||
| 81 | if ((b=BUF_MEM_new()) == NULL) goto err; | 80 | if ((b=BUF_MEM_new()) == NULL) goto err; |
| 82 | if (!BUF_MEM_grow(b,200)) goto err; | 81 | if (!BUF_MEM_grow(b,200)) goto err; |
| 83 | b->data[0]='\0'; | 82 | b->data[0]='\0'; |
| 84 | len=200; | 83 | len=200; |
| 84 | } | ||
| 85 | if (a == NULL) { | ||
| 86 | if(b) { | ||
| 87 | buf=b->data; | ||
| 88 | free(b); | ||
| 85 | } | 89 | } |
| 86 | if (a == NULL) | 90 | strlcpy(buf,"NO X509_NAME",len); |
| 87 | { | 91 | return buf; |
| 88 | if(b) | 92 | } |
| 89 | { | ||
| 90 | buf=b->data; | ||
| 91 | free(b); | ||
| 92 | } | ||
| 93 | strlcpy(buf,"NO X509_NAME",len); | ||
| 94 | return buf; | ||
| 95 | } | ||
| 96 | 93 | ||
| 97 | len--; /* space for '\0' */ | 94 | len--; /* space for '\0' */ |
| 98 | l=0; | 95 | l=0; |
| 99 | for (i=0; i<sk_X509_NAME_ENTRY_num(a->entries); i++) | 96 | for (i=0; i<sk_X509_NAME_ENTRY_num(a->entries); i++) { |
| 100 | { | ||
| 101 | ne=sk_X509_NAME_ENTRY_value(a->entries,i); | 97 | ne=sk_X509_NAME_ENTRY_value(a->entries,i); |
| 102 | n=OBJ_obj2nid(ne->object); | 98 | n=OBJ_obj2nid(ne->object); |
| 103 | if ((n == NID_undef) || ((s=OBJ_nid2sn(n)) == NULL)) | 99 | if ((n == NID_undef) || ((s=OBJ_nid2sn(n)) == NULL)) { |
| 104 | { | ||
| 105 | i2t_ASN1_OBJECT(tmp_buf,sizeof(tmp_buf),ne->object); | 100 | i2t_ASN1_OBJECT(tmp_buf,sizeof(tmp_buf),ne->object); |
| 106 | s=tmp_buf; | 101 | s=tmp_buf; |
| 107 | } | 102 | } |
| 108 | l1=strlen(s); | 103 | l1=strlen(s); |
| 109 | 104 | ||
| 110 | type=ne->value->type; | 105 | type=ne->value->type; |
| 111 | num=ne->value->length; | 106 | num=ne->value->length; |
| 112 | q=ne->value->data; | 107 | q=ne->value->data; |
| 113 | if ((type == V_ASN1_GENERALSTRING) && ((num%4) == 0)) | 108 | if ((type == V_ASN1_GENERALSTRING) && ((num%4) == 0)) { |
| 114 | { | ||
| 115 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=0; | 109 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=0; |
| 116 | for (j=0; j<num; j++) | 110 | for (j=0; j<num; j++) |
| 117 | if (q[j] != 0) gs_doit[j&3]=1; | 111 | if (q[j] != 0) gs_doit[j&3]=1; |
| 118 | 112 | ||
| 119 | if (gs_doit[0]|gs_doit[1]|gs_doit[2]) | 113 | if (gs_doit[0]|gs_doit[1]|gs_doit[2]) |
| 120 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=1; | 114 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=1; |
| 121 | else | 115 | else { |
| 122 | { | ||
| 123 | gs_doit[0]=gs_doit[1]=gs_doit[2]=0; | 116 | gs_doit[0]=gs_doit[1]=gs_doit[2]=0; |
| 124 | gs_doit[3]=1; | 117 | gs_doit[3]=1; |
| 125 | } | ||
| 126 | } | 118 | } |
| 127 | else | 119 | } else |
| 128 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=1; | 120 | gs_doit[0]=gs_doit[1]=gs_doit[2]=gs_doit[3]=1; |
| 129 | 121 | ||
| 130 | for (l2=j=0; j<num; j++) | 122 | for (l2=j=0; j<num; j++) { |
| 131 | { | ||
| 132 | if (!gs_doit[j&3]) continue; | 123 | if (!gs_doit[j&3]) continue; |
| 133 | l2++; | 124 | l2++; |
| 134 | if ((q[j] < ' ') || (q[j] > '~')) l2+=3; | 125 | if ((q[j] < ' ') || (q[j] > '~')) l2+=3; |
| 135 | } | 126 | } |
| 136 | 127 | ||
| 137 | lold=l; | 128 | lold=l; |
| 138 | l+=1+l1+1+l2; | 129 | l+=1+l1+1+l2; |
| 139 | if (b != NULL) | 130 | if (b != NULL) { |
| 140 | { | ||
| 141 | if (!BUF_MEM_grow(b,l+1)) goto err; | 131 | if (!BUF_MEM_grow(b,l+1)) goto err; |
| 142 | p= &(b->data[lold]); | 132 | p= &(b->data[lold]); |
| 143 | } | 133 | } else if (l > len) { |
| 144 | else if (l > len) | ||
| 145 | { | ||
| 146 | break; | 134 | break; |
| 147 | } | 135 | } else |
| 148 | else | ||
| 149 | p= &(buf[lold]); | 136 | p= &(buf[lold]); |
| 150 | *(p++)='/'; | 137 | *(p++)='/'; |
| 151 | memcpy(p,s,(unsigned int)l1); p+=l1; | 138 | memcpy(p,s,(unsigned int)l1); p+=l1; |
| 152 | *(p++)='='; | 139 | *(p++)='='; |
| 153 | q=ne->value->data; | 140 | q=ne->value->data; |
| 154 | for (j=0; j<num; j++) | 141 | for (j=0; j<num; j++) { |
| 155 | { | ||
| 156 | if (!gs_doit[j&3]) continue; | 142 | if (!gs_doit[j&3]) continue; |
| 157 | n=q[j]; | 143 | n=q[j]; |
| 158 | if ((n < ' ') || (n > '~')) | 144 | if ((n < ' ') || (n > '~')) { |
| 159 | { | ||
| 160 | *(p++)='\\'; | 145 | *(p++)='\\'; |
| 161 | *(p++)='x'; | 146 | *(p++)='x'; |
| 162 | *(p++)=hex[(n>>4)&0x0f]; | 147 | *(p++)=hex[(n>>4)&0x0f]; |
| 163 | *(p++)=hex[n&0x0f]; | 148 | *(p++)=hex[n&0x0f]; |
| 164 | } | 149 | } else |
| 165 | else | ||
| 166 | *(p++)=n; | 150 | *(p++)=n; |
| 167 | } | ||
| 168 | *p='\0'; | ||
| 169 | } | 151 | } |
| 170 | if (b != NULL) | 152 | *p='\0'; |
| 171 | { | 153 | } |
| 154 | if (b != NULL) { | ||
| 172 | p=b->data; | 155 | p=b->data; |
| 173 | free(b); | 156 | free(b); |
| 174 | } | 157 | } else |
| 175 | else | ||
| 176 | p=buf; | 158 | p=buf; |
| 177 | if (i == 0) | 159 | if (i == 0) |
| 178 | *p = '\0'; | 160 | *p = '\0'; |
| @@ -181,5 +163,5 @@ err: | |||
| 181 | X509err(X509_F_X509_NAME_ONELINE,ERR_R_MALLOC_FAILURE); | 163 | X509err(X509_F_X509_NAME_ONELINE,ERR_R_MALLOC_FAILURE); |
| 182 | if (b != NULL) BUF_MEM_free(b); | 164 | if (b != NULL) BUF_MEM_free(b); |
| 183 | return(NULL); | 165 | return(NULL); |
| 184 | } | 166 | } |
| 185 | 167 | ||
