Loading apps/asn1pars.c +38 −55 Original line number Diff line number Diff line Loading @@ -80,8 +80,6 @@ #undef PROG #define PROG asn1parse_main /* Minimum buffer size to be used */ #define MIN_BUFFER 256 int MAIN(int, char **); Loading @@ -94,7 +92,7 @@ int MAIN(int argc, char **argv) long num,tmplen; BIO *in=NULL,*out=NULL,*b64=NULL, *derout = NULL; int informat,indent=0, noout = 0, dump = 0, strictpem = 0; char *infile=NULL,*str=NULL,*prog,*oidfile=NULL, *derfile=NULL; char *infile=NULL,*str=NULL,*prog,*oidfile=NULL, *derfile=NULL, *name=NULL, *header=NULL; char *genstr=NULL, *genconf=NULL; unsigned char *tmpbuf; const unsigned char *ctmpbuf; Loading Loading @@ -271,8 +269,20 @@ bad: } } if(strictpem) { if(PEM_read_bio(in, &name, &header, (unsigned char **)&str, &num) != 1) { BIO_printf(bio_err,"Error reading PEM file\n"); ERR_print_errors(bio_err); goto end; } } else { if ((buf=BUF_MEM_new()) == NULL) goto end; if (!BUF_MEM_grow(buf,(BUFSIZ*8)<MIN_BUFFER?MIN_BUFFER:(BUFSIZ*8))) goto end; /* Pre-allocate :-) */ if (!BUF_MEM_grow(buf,BUFSIZ*8)) goto end; /* Pre-allocate :-) */ if (genstr || genconf) { Loading @@ -291,38 +301,6 @@ bad: { BIO *tmp; if(strictpem) { for (;;) { /* Read a line */ i=BIO_gets(in,buf->data,MIN_BUFFER-1); if (i <= 0) { BIO_printf(bio_err, "Error: Cannot find start line\n"); goto end; } /* Strip trailing spaces etc */ do i--; while ((i >= 0) && (buf->data[i] <= ' ')); buf->data[++i]='\0'; /* Check if we have a PEM BEGIN marker */ if (strncmp(buf->data,"-----BEGIN ",11) == 0) { if (strncmp(&(buf->data[i-5]),"-----",5) != 0) continue; break; } } } if ((b64=BIO_new(BIO_f_base64())) == NULL) goto end; BIO_push(b64,in); Loading @@ -342,6 +320,8 @@ bad: } str=buf->data; } /* If any structs to parse go through in sequence */ if (sk_OPENSSL_STRING_num(osk)) Loading Loading @@ -419,6 +399,9 @@ end: if (ret != 0) ERR_print_errors(bio_err); if (buf != NULL) BUF_MEM_free(buf); if (name != NULL) OPENSSL_free(name); if (header != NULL) OPENSSL_free(header); if (strictpem && str != NULL) OPENSSL_free(str); if (at != NULL) ASN1_TYPE_free(at); if (osk != NULL) sk_OPENSSL_STRING_free(osk); OBJ_cleanup(); Loading doc/apps/asn1parse.pod +4 −3 Original line number Diff line number Diff line Loading @@ -82,9 +82,10 @@ file using the B<out> option. =item B<-strictpem> If this option is used then B<-inform> will be ignored. Without this option any data in a PEM format input file will be treated as base64 encoded and processed whether it has the normal PEM BEGIN and END markers or not. This option will ignore any data prior to the start of the BEGIN marker in a PEM file. data in a PEM format input file will be treated as being base64 encoded and processed whether it has the normal PEM BEGIN and END markers or not. This option will ignore any data prior to the start of the BEGIN marker, or after an END marker in a PEM file. =back Loading Loading
apps/asn1pars.c +38 −55 Original line number Diff line number Diff line Loading @@ -80,8 +80,6 @@ #undef PROG #define PROG asn1parse_main /* Minimum buffer size to be used */ #define MIN_BUFFER 256 int MAIN(int, char **); Loading @@ -94,7 +92,7 @@ int MAIN(int argc, char **argv) long num,tmplen; BIO *in=NULL,*out=NULL,*b64=NULL, *derout = NULL; int informat,indent=0, noout = 0, dump = 0, strictpem = 0; char *infile=NULL,*str=NULL,*prog,*oidfile=NULL, *derfile=NULL; char *infile=NULL,*str=NULL,*prog,*oidfile=NULL, *derfile=NULL, *name=NULL, *header=NULL; char *genstr=NULL, *genconf=NULL; unsigned char *tmpbuf; const unsigned char *ctmpbuf; Loading Loading @@ -271,8 +269,20 @@ bad: } } if(strictpem) { if(PEM_read_bio(in, &name, &header, (unsigned char **)&str, &num) != 1) { BIO_printf(bio_err,"Error reading PEM file\n"); ERR_print_errors(bio_err); goto end; } } else { if ((buf=BUF_MEM_new()) == NULL) goto end; if (!BUF_MEM_grow(buf,(BUFSIZ*8)<MIN_BUFFER?MIN_BUFFER:(BUFSIZ*8))) goto end; /* Pre-allocate :-) */ if (!BUF_MEM_grow(buf,BUFSIZ*8)) goto end; /* Pre-allocate :-) */ if (genstr || genconf) { Loading @@ -291,38 +301,6 @@ bad: { BIO *tmp; if(strictpem) { for (;;) { /* Read a line */ i=BIO_gets(in,buf->data,MIN_BUFFER-1); if (i <= 0) { BIO_printf(bio_err, "Error: Cannot find start line\n"); goto end; } /* Strip trailing spaces etc */ do i--; while ((i >= 0) && (buf->data[i] <= ' ')); buf->data[++i]='\0'; /* Check if we have a PEM BEGIN marker */ if (strncmp(buf->data,"-----BEGIN ",11) == 0) { if (strncmp(&(buf->data[i-5]),"-----",5) != 0) continue; break; } } } if ((b64=BIO_new(BIO_f_base64())) == NULL) goto end; BIO_push(b64,in); Loading @@ -342,6 +320,8 @@ bad: } str=buf->data; } /* If any structs to parse go through in sequence */ if (sk_OPENSSL_STRING_num(osk)) Loading Loading @@ -419,6 +399,9 @@ end: if (ret != 0) ERR_print_errors(bio_err); if (buf != NULL) BUF_MEM_free(buf); if (name != NULL) OPENSSL_free(name); if (header != NULL) OPENSSL_free(header); if (strictpem && str != NULL) OPENSSL_free(str); if (at != NULL) ASN1_TYPE_free(at); if (osk != NULL) sk_OPENSSL_STRING_free(osk); OBJ_cleanup(); Loading
doc/apps/asn1parse.pod +4 −3 Original line number Diff line number Diff line Loading @@ -82,9 +82,10 @@ file using the B<out> option. =item B<-strictpem> If this option is used then B<-inform> will be ignored. Without this option any data in a PEM format input file will be treated as base64 encoded and processed whether it has the normal PEM BEGIN and END markers or not. This option will ignore any data prior to the start of the BEGIN marker in a PEM file. data in a PEM format input file will be treated as being base64 encoded and processed whether it has the normal PEM BEGIN and END markers or not. This option will ignore any data prior to the start of the BEGIN marker, or after an END marker in a PEM file. =back Loading