From b40d7c8dfa49bf5e6800688e1dfb1373856796a8 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Tue, 7 Feb 1995 14:13:45 +0000 Subject: [PATCH] Bug fixes. --- odr/odr_bit.c | 7 +++++-- odr/odr_int.c | 8 +++++++- odr/odr_oct.c | 10 ++++++++-- odr/odr_oid.c | 10 ++++++++-- odr/odr_seq.c | 62 +++++++++++++++++++++++++++++++++++---------------------- 5 files changed, 66 insertions(+), 31 deletions(-) diff --git a/odr/odr_bit.c b/odr/odr_bit.c index 8d080a2..aba4f3b 100644 --- a/odr/odr_bit.c +++ b/odr/odr_bit.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_bit.c,v $ - * Revision 1.2 1995-02-03 17:04:37 quinn + * Revision 1.3 1995-02-07 14:13:45 quinn + * Bug fixes. + * + * Revision 1.2 1995/02/03 17:04:37 quinn * *** empty log message *** * * Revision 1.1 1995/02/02 20:38:50 quinn @@ -41,7 +44,7 @@ int odr_bitstring(ODR o, Odr_bitmask **p, int opt) fprintf(o->print, "BITSTRING(len=%d)\n", (*p)->top + 1); return 1; } - if (o->direction == ODR_DECODE && !*p) + if (o->direction == ODR_DECODE) { *p = nalloc(o, sizeof(Odr_bitmask)); memset((*p)->bits, 0, ODR_BITMASK_SIZE); diff --git a/odr/odr_int.c b/odr/odr_int.c index df4655e..ffb41af 100644 --- a/odr/odr_int.c +++ b/odr/odr_int.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_int.c,v $ - * Revision 1.1 1995-02-02 16:21:53 quinn + * Revision 1.2 1995-02-07 14:13:45 quinn + * Bug fixes. + * + * Revision 1.1 1995/02/02 16:21:53 quinn * First kick. * */ @@ -25,7 +28,10 @@ int odr_integer(ODR o, int **p, int opt) o->t_tag = ODR_INTEGER; } if ((res = ber_tag(o, *p, o->t_class, o->t_tag, &cons)) < 0) + { + *p = 0; return 0; + } if (!res) { *p = 0; diff --git a/odr/odr_oct.c b/odr/odr_oct.c index 791654a..63f203c 100644 --- a/odr/odr_oct.c +++ b/odr/odr_oct.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_oct.c,v $ - * Revision 1.3 1995-02-03 17:04:38 quinn + * Revision 1.4 1995-02-07 14:13:46 quinn + * Bug fixes. + * + * Revision 1.3 1995/02/03 17:04:38 quinn * *** empty log message *** * * Revision 1.2 1995/02/02 20:38:51 quinn @@ -31,7 +34,10 @@ int odr_octetstring(ODR o, Odr_oct **p, int opt) o->t_tag = ODR_OCTETSTRING; } if ((res = ber_tag(o, *p, o->t_class, o->t_tag, &cons)) < 0) + { + *p = 0; return 0; + } if (!res) { *p = 0; @@ -42,7 +48,7 @@ int odr_octetstring(ODR o, Odr_oct **p, int opt) fprintf(o->print, "OCTETSTRING(len=%d)\n", (*p)->len); return 1; } - if (o->direction == ODR_DECODE && !*p) + if (o->direction == ODR_DECODE) { *p = nalloc(o, sizeof(Odr_oct)); (*p)->size= 0; diff --git a/odr/odr_oid.c b/odr/odr_oid.c index ed87f33..780cbdd 100644 --- a/odr/odr_oid.c +++ b/odr/odr_oid.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_oid.c,v $ - * Revision 1.1 1995-02-03 17:04:38 quinn + * Revision 1.2 1995-02-07 14:13:46 quinn + * Bug fixes. + * + * Revision 1.1 1995/02/03 17:04:38 quinn * Initial revision * * @@ -26,7 +29,10 @@ int odr_oid(ODR o, Odr_oid **p, int opt) o->t_tag = ODR_OID; } if ((res = ber_tag(o, *p, o->t_class, o->t_tag, &cons)) < 0) + { + *p = 0; return 0; + } if (!res || cons) { *p = 0; @@ -37,7 +43,7 @@ int odr_oid(ODR o, Odr_oid **p, int opt) fprintf(o->print, "OID\n"); return 1; } - if (o->direction == ODR_DECODE && !*p) + if (o->direction == ODR_DECODE) *p = nalloc(o, ODR_OID_SIZE); return ber_oid(o, *p); } diff --git a/odr/odr_seq.c b/odr/odr_seq.c index 68c0c55..e2d0cbf 100644 --- a/odr/odr_seq.c +++ b/odr/odr_seq.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_seq.c,v $ - * Revision 1.2 1995-02-06 16:45:03 quinn + * Revision 1.3 1995-02-07 14:13:46 quinn + * Bug fixes. + * + * Revision 1.2 1995/02/06 16:45:03 quinn * Small mods. * * Revision 1.1 1995/02/02 16:21:54 quinn @@ -51,36 +54,47 @@ int odr_sequence_more(ODR o) int odr_sequence_of(ODR o, Odr_fun type, void *p, int *num) { - char **pp = (char**) p; /* for dereferencing */ - char *tmp; - int size = 0; + char ***pp = (char***) p; /* for dereferencing */ + char **tmp; + int size = 0, i; if (!odr_sequence_begin(o, p, 0)) return 0; - if (o->direction = ODR_DECODE) - *num = 0; - while (odr_sequence_more(o)) + switch (o->direction) { - /* outgrown array? */ - if (*num * sizeof(void*) >= size) - { - /* double the buffer size */ - tmp = nalloc(o, sizeof(void*) * (size += size ? size : - 128)); - if (*num) + case ODR_DECODE: + *num = 0; + while (odr_sequence_more(o)) { - memcpy(tmp, *pp, *num * sizeof(void*)); - /* - * For now, we just throw the old *p away, since we use - * nibble memory anyway (disgusting, isn't it?). - */ - *pp = tmp; + /* outgrown array? */ + if (*num * sizeof(void*) >= size) + { + /* double the buffer size */ + tmp = nalloc(o, sizeof(void*) * (size += size ? size : + 128)); + if (*num) + { + memcpy(tmp, *pp, *num * sizeof(void*)); + /* + * For now, we just throw the old *p away, since we use + * nibble memory anyway (disgusting, isn't it?). + */ + } + *pp = tmp; + } + if (!(*type)(o, (*pp) + *num, 0)) + return 0; + (*num)++; } - } - if (!(*type)(o, (*pp)[*num++], 0)) - return 0; - *num++; + break; + case ODR_ENCODE: + for (i = 0; i < *num; i++) + if (!(*type)(o, *pp + i, 0)) + return 0; + break; + case ODR_PRINT: return 1; + default: return 0; } return odr_sequence_end(o); } -- 1.7.10.4