Claudio Jeker(cje...@diehard.n-r-g.com) on 2021.12.28 16:57:48 +0100:
> This re-shuffles struct entity a bit and removes the unneeded has_data
> indicator. Both data and datasz are not null when data is present and null
> when there is no data. With this in mind the code becomes simpler.
>
ok benno@
> --
> :wq Claudio
>
> Index: extern.h
> ===
> RCS file: /cvs/src/usr.sbin/rpki-client/extern.h,v
> retrieving revision 1.99
> diff -u -p -r1.99 extern.h
> --- extern.h 22 Dec 2021 09:35:14 - 1.99
> +++ extern.h 28 Dec 2021 15:40:55 -
> @@ -336,13 +336,12 @@ enum publish_type {
> * and parsed.
> */
> struct entity {
> - enum rtype type; /* type of entity (not RTYPE_EOF) */
> + TAILQ_ENTRY(entity) entries;
> char*file; /* local path to file */
> - int has_data; /* whether data blob is specified */
> unsigned char *data; /* optional data blob */
> size_t datasz;/* length of optional data blob */
> int talid; /* tal identifier */
> - TAILQ_ENTRY(entity) entries;
> + enum rtype type; /* type of entity (not RTYPE_EOF) */
> };
> TAILQ_HEAD(entityq, entity);
>
> Index: main.c
> ===
> RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
> retrieving revision 1.169
> diff -u -p -r1.169 main.c
> --- main.c22 Dec 2021 09:35:14 - 1.169
> +++ main.c28 Dec 2021 15:39:11 -
> @@ -120,9 +120,7 @@ entity_read_req(struct ibuf *b, struct e
> io_read_buf(b, >type, sizeof(ent->type));
> io_read_buf(b, >talid, sizeof(ent->talid));
> io_read_str(b, >file);
> - io_read_buf(b, >has_data, sizeof(ent->has_data));
> - if (ent->has_data)
> - io_read_buf_alloc(b, (void **)>data, >datasz);
> + io_read_buf_alloc(b, (void **)>data, >datasz);
> }
>
> /*
> @@ -144,9 +142,7 @@ entity_write_req(const struct entity *en
> io_simple_buffer(b, >type, sizeof(ent->type));
> io_simple_buffer(b, >talid, sizeof(ent->talid));
> io_str_buffer(b, ent->file);
> - io_simple_buffer(b, >has_data, sizeof(int));
> - if (ent->has_data)
> - io_buf_buffer(b, ent->data, ent->datasz);
> + io_buf_buffer(b, ent->data, ent->datasz);
> io_close_buffer(, b);
> }
>
> @@ -194,11 +190,8 @@ entityq_add(char *file, enum rtype type,
> p->type = type;
> p->talid = talid;
> p->file = file;
> - p->has_data = data != NULL;
> - if (p->has_data) {
> - p->data = data;
> - p->datasz = datasz;
> - }
> + p->data = data;
> + p->datasz = (data != NULL) ? datasz : 0;
>
> entity_queue++;
>
> Index: parser.c
> ===
> RCS file: /cvs/src/usr.sbin/rpki-client/parser.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 parser.c
> --- parser.c 4 Nov 2021 18:26:48 - 1.28
> +++ parser.c 28 Dec 2021 15:40:04 -
> @@ -195,7 +195,7 @@ proc_parser_cert(const struct entity *en
> STACK_OF(X509) *chain;
> STACK_OF(X509_CRL) *crls;
>
> - assert(!entp->has_data);
> + assert(entp->data == NULL);
>
> /* Extract certificate data and X509. */
>
> @@ -274,7 +274,7 @@ proc_parser_root_cert(const struct entit
> struct cert *cert;
> X509*x509;
>
> - assert(entp->has_data);
> + assert(entp->data != NULL);
>
> /* Extract certificate data and X509. */
>
> @@ -525,7 +525,7 @@ parse_entity(struct entityq *q, struct m
> tal_free(tal);
> break;
> case RTYPE_CER:
> - if (entp->has_data)
> + if (entp->data != NULL)
> cert = proc_parser_root_cert(entp, f, flen);
> else
> cert = proc_parser_cert(entp, f, flen);
>