SilcIdType silc_id_payload_get_type(SilcIDPayload payload)
{
- return payload->type;
+ return payload ? payload->type : 0;
}
/* Get ID */
void *silc_id_payload_get_id(SilcIDPayload payload)
{
- return silc_id_str2id(payload->id, payload->len, payload->type);
+ return payload ? silc_id_str2id(payload->id, payload->len,
+ payload->type) : NULL;
}
/* Get raw ID data. Data is duplicated. */
unsigned char *silc_id_payload_get_data(SilcIDPayload payload)
{
- unsigned char *ret = silc_calloc(payload->len, sizeof(*ret));
+ unsigned char *ret;
+
+ if (!payload)
+ return NULL;
+
+ ret = silc_calloc(payload->len, sizeof(*ret));
memcpy(ret, payload->id, payload->len);
return ret;
}
unsigned int silc_id_payload_get_len(SilcIDPayload payload)
{
- return payload->len;
+ return payload ? payload->len : 0;
}
/******************************************************************************
unsigned char *silc_argument_get_first_arg(SilcArgumentPayload payload,
unsigned int *ret_len)
{
+ if (!payload)
+ return NULL;
+
payload->pos = 0;
if (ret_len)
unsigned char *silc_argument_get_next_arg(SilcArgumentPayload payload,
unsigned int *ret_len)
{
+ if (!payload)
+ return NULL;
+
if (payload->pos >= payload->argc)
return NULL;
{
int i;
+ if (!payload)
+ return NULL;
+
for (i = 0; i < payload->argc; i++)
if (payload->argv_types[i] == type)
break;