X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccore%2Fsilccommand.c;h=0d64787d06cd8d3ad778757ae0d3c05864d19562;hp=e1c2fc2bf1fe3a6a9e6db0677c74be1516ed9799;hb=e8c2b7b9cabcf221862e7d91a1a7a1e0d6f02dd8;hpb=6493ad0f849286d972031f20c6eed45140d5e0a7 diff --git a/lib/silccore/silccommand.c b/lib/silccore/silccommand.c index e1c2fc2b..0d64787d 100644 --- a/lib/silccore/silccommand.c +++ b/lib/silccore/silccommand.c @@ -207,31 +207,33 @@ SilcBuffer silc_command_payload_encode_vap(SilcCommand cmd, uint16 ident, uint32 argc, va_list ap) { - unsigned char **argv; + unsigned char **argv = NULL; uint32 *argv_lens = NULL, *argv_types = NULL; unsigned char *x; uint32 x_len; uint32 x_type; SilcBuffer buffer; - int i, k; - - argv = silc_calloc(argc, sizeof(unsigned char *)); - argv_lens = silc_calloc(argc, sizeof(uint32)); - argv_types = silc_calloc(argc, sizeof(uint32)); - - for (i = 0, k = 0; i < argc; i++) { - x_type = va_arg(ap, uint32); - x = va_arg(ap, unsigned char *); - x_len = va_arg(ap, uint32); + int i, k = 0; - if (!x_type || !x || !x_len) - continue; - - argv[k] = silc_calloc(x_len + 1, sizeof(unsigned char)); - memcpy(argv[k], x, x_len); - argv_lens[k] = x_len; - argv_types[k] = x_type; - k++; + if (argc) { + argv = silc_calloc(argc, sizeof(unsigned char *)); + argv_lens = silc_calloc(argc, sizeof(uint32)); + argv_types = silc_calloc(argc, sizeof(uint32)); + + for (i = 0, k = 0; i < argc; i++) { + x_type = va_arg(ap, uint32); + x = va_arg(ap, unsigned char *); + x_len = va_arg(ap, uint32); + + if (!x_type || !x || !x_len) + continue; + + argv[k] = silc_calloc(x_len + 1, sizeof(unsigned char)); + memcpy(argv[k], x, x_len); + argv_lens[k] = x_len; + argv_types[k] = x_type; + k++; + } } buffer = silc_command_payload_encode(cmd, k, argv, argv_lens,