Fixes to d2i_ASN1_OBJECT, ASN1_INTEGER_to_BN and a_strex.c
This commit is contained in:
parent
eaa2818189
commit
469938cb40
9
CHANGES
9
CHANGES
@ -4,6 +4,15 @@
|
||||
|
||||
Changes between 0.9.5a and 0.9.6 [xx XXX 2000]
|
||||
|
||||
*) Fix various signed/unsigned issues to make a_strex,c
|
||||
compile under VC++.
|
||||
[Oscar Jacobsson <oscar.jacobsson@celocom.com>]
|
||||
|
||||
*) ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct
|
||||
length if passed a buffer. ASN1_INTEGER_to_BN failed
|
||||
if passed a NULL BN and its argument was negative.
|
||||
[Steve Henson, pointed out by Sven Heiberg <sven@tartu.cyber.ee>]
|
||||
|
||||
*) Modification to PKCS#7 encoding routines to output definite
|
||||
length encoding. Since currently the whole structures are in
|
||||
memory there's not real point in using indefinite length
|
||||
|
@ -465,7 +465,7 @@ BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai, BIGNUM *bn)
|
||||
|
||||
if ((ret=BN_bin2bn(ai->data,ai->length,bn)) == NULL)
|
||||
ASN1err(ASN1_F_ASN1_INTEGER_TO_BN,ASN1_R_BN_LIB);
|
||||
if(ai->type == V_ASN1_NEG_INTEGER) bn->neg = 1;
|
||||
if(ai->type == V_ASN1_NEG_INTEGER) ret->neg = 1;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
@ -65,11 +65,12 @@
|
||||
int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp)
|
||||
{
|
||||
unsigned char *p;
|
||||
int objsize;
|
||||
|
||||
if ((a == NULL) || (a->data == NULL)) return(0);
|
||||
|
||||
if (pp == NULL)
|
||||
return(ASN1_object_size(0,a->length,V_ASN1_OBJECT));
|
||||
objsize = ASN1_object_size(0,a->length,V_ASN1_OBJECT);
|
||||
if (pp == NULL) return objsize;
|
||||
|
||||
p= *pp;
|
||||
ASN1_put_object(&p,0,a->length,V_ASN1_OBJECT,V_ASN1_UNIVERSAL);
|
||||
@ -77,7 +78,7 @@ int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp)
|
||||
p+=a->length;
|
||||
|
||||
*pp=p;
|
||||
return(a->length);
|
||||
return(objsize);
|
||||
}
|
||||
|
||||
int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
|
||||
|
@ -96,7 +96,7 @@ int send_bio_chars(void *arg, const void *buf, int len)
|
||||
int send_fp_chars(void *arg, const void *buf, int len)
|
||||
{
|
||||
if(!arg) return 1;
|
||||
if(fwrite(buf, 1, len, arg) != len) return 0;
|
||||
if(fwrite(buf, 1, len, arg) != (unsigned int)len) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -123,7 +123,7 @@ static int do_esc_char(unsigned long c, unsigned char flags, char *do_quotes, ch
|
||||
if(!io_ch(arg, tmphex, 6)) return -1;
|
||||
return 6;
|
||||
}
|
||||
chtmp = c;
|
||||
chtmp = (unsigned char)c;
|
||||
if(chtmp > 0x7f) chflgs = flags & ASN1_STRFLGS_ESC_MSB;
|
||||
else chflgs = char_type[chtmp] & flags;
|
||||
if(chflgs & CHARTYPE_BS_ESC) {
|
||||
@ -200,12 +200,12 @@ static int do_buf(unsigned char *buf, int buflen,
|
||||
* otherwise each character will be > 0x7f and so the
|
||||
* character will never be escaped on first and last.
|
||||
*/
|
||||
len = do_esc_char(utfbuf[i], flags | orflags, quotes, io_ch, arg);
|
||||
len = do_esc_char(utfbuf[i], (unsigned char)(flags | orflags), quotes, io_ch, arg);
|
||||
if(len < 0) return -1;
|
||||
outlen += len;
|
||||
}
|
||||
} else {
|
||||
len = do_esc_char(c, flags | orflags, quotes, io_ch, arg);
|
||||
len = do_esc_char(c, (unsigned char)(flags | orflags), quotes, io_ch, arg);
|
||||
if(len < 0) return -1;
|
||||
outlen += len;
|
||||
}
|
||||
@ -304,7 +304,7 @@ static int do_print_ex(char_io *io_ch, void *arg, unsigned long lflags, ASN1_STR
|
||||
unsigned char flags;
|
||||
quotes = 0;
|
||||
/* Keep a copy of escape flags */
|
||||
flags = lflags & ESC_FLAGS;
|
||||
flags = (unsigned char)(lflags & ESC_FLAGS);
|
||||
|
||||
type = str->type;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user