X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=output%2Foutput_binary.c;h=f542958554c50aa7bdaaf7fe5b26153c95d2f93e;hb=cdb3573ceba61b02b80f7fc979d166db5b6ff3bc;hp=5f62dfe9aa39cd0a6a265d630bd65147dd640dba;hpb=f50f3f40d9238b0c50be67e52bc132aadfcf2050;p=libsigrok.git diff --git a/output/output_binary.c b/output/output_binary.c index 5f62dfe9..f5429585 100644 --- a/output/output_binary.c +++ b/output/output_binary.c @@ -24,8 +24,7 @@ #include #include "config.h" - -static int data(struct sr_output *o, char *data_in, uint64_t length_in, +static int data(struct sr_output *o, const char *data_in, uint64_t length_in, char **data_out, uint64_t *length_out) { char *outbuf; @@ -33,8 +32,25 @@ static int data(struct sr_output *o, char *data_in, uint64_t length_in, /* Prevent compiler warnings. */ o = o; - if (!(outbuf = calloc(1, length_in))) + if (!data_in) { + g_warning("binary output: %s: data_in was NULL", __func__); + return SR_ERR; + } + + if (!length_out) { + g_warning("binary output: %s: length_out was NULL", __func__); + return SR_ERR; + } + + if (length_in == 0) { + g_warning("binary output: %s: length_in was 0", __func__); + return SR_ERR; + } + + if (!(outbuf = calloc(1, length_in))) { + g_warning("binary output: %s: outbuf calloc failed", __func__); return SR_ERR_MALLOC; + } memcpy(outbuf, data_in, length_in); *data_out = outbuf; @@ -44,10 +60,10 @@ static int data(struct sr_output *o, char *data_in, uint64_t length_in, } struct sr_output_format output_binary = { - "binary", - "Raw binary", - DF_LOGIC, - NULL, - data, - NULL, + .id = "binary", + .description = "Raw binary", + .df_type = SR_DF_LOGIC, + .init = NULL, + .data = data, + .event = NULL, };